Send push notifications and trigger live activities with Ruby

Use the official Ruby SDK to deliver immediate push notifications and live activity progress updates for long-running jobs and automation workflows.

Install

gem install activitysmith

Setup

require "activitysmith"

activitysmith = ActivitySmith::Client.new(
api_key: ENV.fetch("ACTIVITYSMITH_API_KEY")
)

Push Notifications

Send an immediate notification for a completed task or event:

Push notification example for a new subscription event
activitysmith.notifications.send(
{
title: "New subscription 💸",
message: "Customer upgraded to Pro plan"
}
)

Live Activities

Live Activities come in two UI types, but the lifecycle stays the same: start the activity, keep the returned activity_id, update it as state changes, then end it when the work is done.

  • segmented_progress: best for jobs tracked in steps
  • progress: best for jobs tracked as a percentage or numeric range

Shared flow

  1. Call activitysmith.live_activities.start(...).
  2. Save the returned activity_id.
  3. Call activitysmith.live_activities.update(...) as progress changes.
  4. Call activitysmith.live_activities.end(...) when the work is finished.

Segmented Progress Type

Use segmented_progress when progress is easier to follow as steps instead of a raw percentage. It fits jobs like backups, deployments, ETL pipelines, and checklists where "step 2 of 3" is more useful than "67%". number_of_steps is dynamic, so you can increase or decrease it later if the workflow changes.

Start

Segmented progress start example
start = activitysmith.live_activities.start(
{
content_state: {
title: "Nightly database backup",
subtitle: "create snapshot",
number_of_steps: 3,
current_step: 1,
type: "segmented_progress",
color: "yellow"
},
channels: ["devs", "ops"] # Optional
}
)

activity_id = start.activity_id

Update

Segmented progress update example
update = activitysmith.live_activities.update(
{
activity_id: activity_id,
content_state: {
title: "Nightly database backup",
subtitle: "upload archive",
current_step: 2
}
}
)

End

Segmented progress end example
finish = activitysmith.live_activities.end(
{
activity_id: activity_id,
content_state: {
title: "Nightly database backup",
subtitle: "verify restore",
current_step: 3,
auto_dismiss_minutes: 2
}
}
)

Progress Type

Use progress when the state is naturally continuous. It fits charging, downloads, sync jobs, uploads, timers, and any flow where a percentage or numeric range is the clearest signal.

Start

Progress start example
start = activitysmith.live_activities.start(
{
content_state: {
title: "EV Charging",
subtitle: "Added 30 mi range",
type: "progress",
percentage: 15,
color: "lime"
}
}
)

activity_id = start.activity_id

Update

Progress update example
activitysmith.live_activities.update(
{
activity_id: activity_id,
content_state: {
title: "EV Charging",
subtitle: "Added 120 mi range",
percentage: 60
}
}
)

End

Progress end example
activitysmith.live_activities.end(
{
activity_id: activity_id,
content_state: {
title: "EV Charging",
subtitle: "Added 200 mi range",
percentage: 100,
auto_dismiss_minutes: 2
}
}
)

Integrate with any Ruby application

Keep your team aligned with immediate event delivery across incidents, business signals, and automation outcomes.