Engagement & campaigns (AWS) · migration guide

Migrate from Amazon Pinpoint to Amba

End of support: October 30, 2026. The clock is running. Official path: AWS End User Messaging (push/SMS APIs) + Amazon Connect (campaigns, journeys). Official notice

Amazon Pinpoint reaches end of support on October 30, 2026, and stopped accepting new customers on May 20, 2025. AWS End User Messaging is the official successor for push and SMS APIs; campaign, segment, and journey tooling moves toward Amazon Connect. This guide maps each Pinpoint engagement concept to an Amba primitive a coding agent recreates over MCP.

Get an API key Get the agent promptupdated June 12, 2026
or let your agent do it:

Pinpoint bundled mobile push, segments, campaigns, journeys, and analytics into one AWS service. AWS is splitting that surface: messaging APIs continue under AWS End User Messaging, engagement tooling moves toward Amazon Connect, email toward SES, and event analytics toward Kinesis. If what you actually run is mobile push campaigns against user segments, Amba covers that exact surface as one backend — and because every Amba primitive is an MCP tool, the recreation step is something your coding agent does, not a console you click through. Everything below is a real, exportable Pinpoint object mapped to a real Amba API.

concept map

How do Amazon Pinpoint concepts map to Amba primitives?

Amazon PinpointAmbanotes
Endpoints / usersapp_users — amba_users_createEndpoint User.UserId becomes external_id; endpoint Attributes and UserAttributes flatten into user properties. Bare device endpoints re-register via the SDK.
Segments (dimensions)Segments — amba_segments_createAttribute and recency dimensions become JSON rules: AND/OR conditions with operators like eq, gt, contains, within on user properties and last_seen_at.
Campaigns (push)Push campaigns — amba_push_campaigns_createTitle, body, segment targeting, and scheduling map one-to-one. Send immediately with amba_push_campaigns_send or pass scheduled_at.
JourneysSegment-triggered campaignsHonest gap: no multi-step journey designer on Amba as of mid-2026. Decompose each journey into entry-condition segments plus one scheduled campaign per message step.
Analytics events (put-events)amba_events_trackServer-side event tracking with batching and idempotency keys; events drive segments, streaks, XP, and webhooks downstream.
Message templatesCampaign title + bodyPush content lives on the Amba campaign itself; there is no separate Handlebars template library for push as of mid-2026.
step by step

How do I migrate from Amazon Pinpoint to Amba?

  1. Export endpoints from Pinpoint

    Create an unfiltered segment in Pinpoint (it encompasses every endpoint), then run an export job to S3 and download the newline-delimited JSON. This is AWS’s own documented offboarding path.

    aws pinpoint create-export-job --application-id <APP_ID> --export-job-request RoleArn=<EXPORT_ROLE_ARN>,S3UrlPrefix=s3://<BUCKET>/pinpoint-export/
  2. Export segment, campaign, and journey definitions

    Pull every definition you need to recreate with the Pinpoint CLI before the console disappears on October 30, 2026.

    aws pinpoint get-segments --application-id <APP_ID> > pinpoint-segments.json
    aws pinpoint get-campaigns --application-id <APP_ID> > pinpoint-campaigns.json
    aws pinpoint list-journeys --application-id <APP_ID> > pinpoint-journeys.json
  3. Connect a coding agent to Amba

    Point any MCP-aware agent at https://mcp.amba.dev/mcp and have it call amba_developer_signup — it mints a developer token and a provisioned project with API keys, no browser involved. Or paste the ready-made prompt below.

  4. Recreate users

    For each exported endpoint with a User.UserId, the agent calls amba_users_create with external_id set to the Pinpoint UserId and the endpoint attributes flattened into properties.

  5. Recreate segments

    Each Pinpoint segment’s dimensions translate into an amba_segments_create rules object — AND/OR conditions over user properties and recency — then amba_segments_evaluate refreshes membership immediately.

  6. Recreate campaigns; decompose journeys

    Push campaigns map one-to-one via amba_push_campaigns_create (title, body, segment_id, scheduled_at). Journeys decompose into entry-condition segments plus one campaign per message step; branching logic is dropped and reported, not silently lost.

  7. Repoint the app and verify

    Integrate the Amba SDK so devices re-register APNs/FCM push tokens on next launch, route analytics through amba_events_track, then confirm delivery with amba_push_send_test before the cutover.

the honest part

What does not map?

SMS, email, voice, and WhatsApp channels
Amba campaigns are APNs/FCM mobile push. For the other Pinpoint channels, AWS End User Messaging is the official successor (SMS/voice/WhatsApp) and Amazon SES is AWS’s recommendation for email — use them alongside Amba rather than forcing a bad fit.
Journey branching logic
Waits, yes/no splits, and multivariate paths have no Amba equivalent as of mid-2026. Each journey becomes segments + scheduled campaigns; the branching itself must be redesigned, not pasted.
Deliverability history and analytics KPIs
Historical campaign metrics do not import. Export the last 90 days of KPIs with Pinpoint’s date-range KPI APIs before end of support if you need the record.
Device push tokens
Tokens are not bulk-imported. The Amba SDK re-registers each device’s APNs/FCM token on the first app launch after integration — coverage rebuilds as users open the app.
paste-ready

The agent prompt that does the whole thing

Paste this into any MCP-aware coding agent (Claude Code, Cursor, Windsurf). It connects to Amba’s hosted MCP server at mcp.amba.dev, signs up with amba_developer_signup, and recreates your Amazon Pinpoint setup tool call by tool call. Plain-text version: /migrate/aws-pinpoint/prompt.txt

You are migrating a mobile app off Amazon Pinpoint (end of support: October 30, 2026) onto Amba.

Amba is an agent-native mobile backend. Its hosted MCP server is https://mcp.amba.dev/mcp (Streamable HTTP). Add it to your MCP client config under mcpServers.amba, or POST JSON-RPC tools/call requests to it directly with Content-Type: application/json and Accept: application/json, text/event-stream (the server rejects requests that do not accept both).

Step 0 — Account. Call amba_developer_signup with { "email": "<developer email>", "password": "<min 8 chars>" } — no auth needed. Save the returned pat and project.project_id, and pass "pat" as an argument on every subsequent tool call this session. Poll amba_projects_get_provisioning_status with { "project_id": "<project_id>", "pat": "<pat>" } until the project status is "active" (about 10 seconds).

Step 1 — Export from Pinpoint. Run in the user's shell (needs AWS credentials with Pinpoint read access):

  aws pinpoint get-segments --application-id <PINPOINT_APP_ID> > pinpoint-segments.json
  aws pinpoint get-campaigns --application-id <PINPOINT_APP_ID> > pinpoint-campaigns.json
  aws pinpoint list-journeys --application-id <PINPOINT_APP_ID> > pinpoint-journeys.json

To export endpoints (users/devices), create an unfiltered segment in Pinpoint, then:

  aws pinpoint create-export-job --application-id <PINPOINT_APP_ID> --export-job-request RoleArn=<EXPORT_ROLE_ARN>,S3UrlPrefix=s3://<BUCKET>/pinpoint-export/

and download the exported newline-delimited JSON from S3.

Step 2 — Recreate users. For each exported endpoint that has a User.UserId, call amba_users_create:

  { "project_id": "<project_id>", "external_id": "<Pinpoint User.UserId>", "properties": { ...flattened endpoint Attributes and UserAttributes... }, "pat": "<pat>" }

Endpoints without a UserId are bare devices; skip them — device push tokens re-register through the Amba SDK at next app launch (Step 5).

Step 3 — Recreate segments. Translate each Pinpoint segment's dimensions into Amba rules and call amba_segments_create:

  { "project_id": "<project_id>", "name": "<segment name>", "rules": { "operator": "AND", "conditions": [ { "field": "properties.<attribute>", "op": "eq", "value": "<value>" } ] }, "pat": "<pat>" }

Operators: eq, neq, gt, gte, lt, lte, contains, not_contains, exists, not_exists, within, not_within. Recency dimensions ("active in the last 7 days") become conditions on "last_seen_at". After each create, call amba_segments_evaluate with { "project_id": "<project_id>", "segment_id": "<segment id>", "pat": "<pat>" } to refresh membership immediately instead of waiting for the scheduled run.

Step 4 — Recreate push campaigns. For each Pinpoint push campaign, call amba_push_campaigns_create:

  { "project_id": "<project_id>", "title": "<push title>", "body": "<push body>", "name": "<internal campaign name>", "segment_id": "<Amba segment id from Step 3>", "scheduled_at": "<ISO 8601 datetime — omit to keep it a draft>", "pat": "<pat>" }

Journeys have no one-to-one equivalent on Amba as of mid-2026: decompose each journey into entry-condition segments plus one campaign per message step, and tell the user exactly which journeys you decomposed and which branching logic (waits, splits) was dropped.

SMS, email, voice, and WhatsApp campaigns do NOT map — Amba campaigns are APNs/FCM mobile push. Recommend AWS End User Messaging (the official successor for Pinpoint messaging channels) and Amazon SES for email, and say so to the user instead of silently skipping them.

Step 5 — Repoint the app. Install the Amba SDK so devices register their APNs/FCM push tokens on next launch (tokens cannot be bulk-imported; re-registration is the supported path), and route analytics events through amba_events_track:

  { "project_id": "<project_id>", "event_name": "<event name>", "app_user_id": "<Amba user id>", "properties": { ... }, "event_id": "<idempotency key>", "pat": "<pat>" }

Step 6 — Verify. Send a test push with amba_push_send_test ({ "project_id": "<project_id>", "title": "Test", "body": "Migration check", "app_user_id": "<user with a registered token>", "pat": "<pat>" } — or "device_token" + "provider" of "apns"/"fcm"), and list recreated campaigns with amba_push_list_campaigns ({ "project_id": "<project_id>", "pat": "<pat>" }).

Finish by reporting to the user: what was recreated, which journeys were decomposed and what was dropped, and which channels need AWS End User Messaging or SES instead.

Full guide: https://amba.dev/migrate/aws-pinpoint
questions

Amazon Pinpoint migration — FAQ

When does Amazon Pinpoint shut down?

AWS ends support for Amazon Pinpoint on October 30, 2026. The service stopped accepting new customers on May 20, 2025. After the end-of-support date, the Pinpoint console and resources — endpoints, segments, campaigns, journeys, analytics — are no longer accessible.

What is the official replacement for Amazon Pinpoint?

AWS End User Messaging is the official successor for the messaging channel APIs (push, SMS, voice, WhatsApp), and AWS recommends Amazon Connect for campaigns, journeys, and segments, SES for email, and Kinesis for event analytics. Amba is an alternative if you want push campaigns, segments, and analytics as one mobile backend instead of several services.

Can an AI agent do the Pinpoint migration?

Mostly, yes. The AWS CLI exports run in your shell; everything Amba-side — signup, users, segments, campaigns — is an MCP tool call, so a coding agent connected to mcp.amba.dev recreates the configuration from your exports. This page ships a paste-ready prompt at /migrate/aws-pinpoint/prompt.txt.

Do Pinpoint journeys migrate to Amba?

Not one-to-one. As of mid-2026 Amba has no multi-step journey designer; journeys decompose into entry-condition segments plus one scheduled push campaign per message step. Simple journeys translate cleanly; branching logic (waits, splits) must be redesigned. If branching journeys are core, Amazon Connect is the official path.

Does Amba support SMS and email campaigns like Pinpoint?

No. Amba campaigns are APNs/FCM mobile push only. AWS End User Messaging continues to serve SMS, voice, and WhatsApp APIs, and AWS recommends SES for email. Teams typically pair Amba (push, segments, engagement) with those channel services where needed.

sources

Sources for this guide

start in 30 seconds

Hand the docs to your agent.
Ship by lunch.

Read the docs