Comparison

Amazon Pinpoint Shutdown: Where Your Email Campaigns Go

By Lalit Kumar Jangid10 min

On this page+

AWS ends support for Amazon Pinpoint on October 30, 2026. After that date the Pinpoint console and its engagement features, which are endpoints, segments, campaigns, journeys and analytics, can no longer be used. If you send email campaigns from Pinpoint, you need a new home for your contacts, templates and campaigns before the deadline, and you need to export your data while you still can.

This guide explains exactly what stops working, what keeps working, the paths AWS recommends, and a step-by-step plan to move your email to Cresca, with scripts you can copy.

In this guide

  • What stops on October 30, and what keeps working
  • The paths AWS recommends
  • Export your Pinpoint data first
  • Where each Pinpoint feature goes in Cresca
  • Step-by-step: move your email to Cresca
  • If you only send transactional email through Pinpoint
  • What Cresca does not replace
  • A one-week migration checklist
  • Frequently asked questions

What stops on October 30, and what keeps working

AWS's end-of-support notice splits Pinpoint into two halves. The engagement features are retired. Several message-sending APIs keep running. Pinpoint also stopped accepting new customers on May 20, 2025.

Pinpoint capabilityAfter October 30, 2026
Console, endpoints, segments, campaigns, journeysNo longer accessible
Analytics and KPI APIsNot supported; export historical KPIs before the date
SendUsersMessages and sending to a stored endpoint IDNot supported
In-app messaging and recommendersNot supported
Email, SMS and voice sending with SendMessagesContinues for existing customers only
Email, SMS and voice templatesContinue, including create, update and delete
Push, push templates, OTP, phone number validationContinue for all accounts
Event delivery to Kinesis or Data Firehose, metrics to CloudWatchContinue for direct sends

The short version for email marketers: if you build audiences and send email campaigns or journeys in Pinpoint, that stops on October 30. If you only call SendMessages to send one-off emails from your app, that keeps working for now, but AWS recommends moving it too.

The paths AWS recommends

  • Email sending: Amazon Simple Email Service (SES). SES is a sending service. It has no campaign builder, audience segments or email designer, so you build those yourself or use a platform on top.
  • Segments, campaigns and journeys: Amazon Connect outbound campaigns and Customer Profiles. This path is built for contact-centre teams: agent-assisted calling, predictive dialling and coordinated inbound and outbound engagement.
  • SMS, voice, push and OTP: AWS End User Messaging, which is what Pinpoint's channel APIs were renamed to in 2024.
  • Events and mobile analytics: Amazon Kinesis.
  • The email deliverability dashboard: SES Virtual Deliverability Manager.

If your Pinpoint use was mostly email marketing, meaning a contact list, a few segments, designed campaigns and maybe a welcome series, neither SES on its own nor a contact-centre platform is a like-for-like replacement. That's the gap an email marketing platform fills.

Export your Pinpoint data first

Do this before anything else, while the console still works. Everything below comes from the AWS offboarding steps.

  1. Endpoints (your contacts). Create a segment with no filters, so it includes every endpoint, then export it to an S3 bucket or download it.
  2. Segments, campaigns and journeys. Save their definitions with the get-segment, get-campaign and get-journey APIs, or copy them from the console. You'll rebuild them, so screenshots of the important ones help too.
  3. Templates. List them with list-templates, then fetch each one with get-email-template.
  4. Analytics. The KPI APIs, such as get-campaign-date-range-kpi and get-application-date-range-kpi, return up to the past 3 months. Export anything you want to keep for reporting.

For example, with the AWS CLI:

# Save every email template aws pinpoint list-templates --template-type EMAIL > templates.json aws pinpoint get-email-template --template-name welcome-email > welcome-email.json ,[object Object],

aws pinpoint get-campaign --application-id APP_ID --campaign-id CAMPAIGN_ID > campaign.json aws pinpoint get-campaign-date-range-kpi --application-id APP_ID --campaign-id CAMPAIGN_ID ,[object Object], --kpi-name email-open-rate > campaign-kpi.json

Where each Pinpoint feature goes in Cresca

In PinpointIn Cresca
Email endpointsContacts, imported from CSV or added with the contacts API
Endpoint and user attributesCustom fields and tags
SegmentsContact lists, built from tags and custom fields
Email campaignsCampaigns: designed by the AI agent, in the design editor or from a template, sent now or scheduled
Simple email journeys, such as a welcome seriesAutomation workflows that send a sequence of emails with delays
Email templatesMarketing templates in the design editor; transactional templates with versions for API email
SendMessages for app emailThe transactional email API: POST /emails
Campaign analyticsCampaign reports: deliveries, bounces, complaints, unsubscribes, plus opt-in opens and clicks
Verified email identity on SESA verified sending domain in Cresca, with its own DKIM and SPF records

Step-by-step: move your email to Cresca

Step 1: Verify your sending domain

In Cresca, open Sending Domains and add the domain you send from today. Cresca gives you the exact DNS records: an ownership record, three DKIM records and a custom MAIL FROM subdomain with its own SPF record. If your DNS is on Cloudflare, Cresca can add them for you.

Your existing SES records can stay where they are. Cresca only adds new records and never overwrites existing ones, so your Pinpoint sending keeps working while you test. See sending domains for details.

Step 2: Turn your endpoint export into a clean contact file

A Pinpoint segment export has one endpoint per line, including SMS and push endpoints, and opted-out addresses. Before importing, keep only email endpoints, leave out anyone who opted out, and remove duplicates. This script does that and writes a CSV you can import:

import csv import json ,[object Object], ,[object Object],

print(f"{len(seen)} contacts written")

Change the attribute names to the ones your project uses. Anything you used for segmenting, such as plan, country or signup date, is worth keeping as a column.

Opted-out people must stay out of your marketing. Don't import them as contacts. If you want an extra safeguard, add their addresses to your suppression list in Cresca.

Step 3: Import your contacts

Import the CSV in Contacts, map each column to a field or custom field, and add tags that match your old segments. During import, invalid and duplicate addresses are skipped, and addresses that have bounced or complained are kept out.

If you'd rather script it, the contacts API adds up to 1,000 contacts per request to a list, creating the list if needed. It takes an email address and an optional first and last name, so use the CSV import for custom fields.

const response = await fetch('https://api.cresca.xyz/api/v1/contacts', { method: 'POST', headers: { Authorization: `Bearer ${process.env.CRESCA_API_KEY}`, // full-access key 'Content-Type': 'application/json', }, body: JSON.stringify({ list_name: 'Migrated from Pinpoint', contacts: [ { email: 'ana@example.com', first_name: 'Ana' }, { email: 'ben@example.com', first_name: 'Ben' }, ], }), }); console.log((await response.json()).summary); // created, updated, rejected...

Contact imports through the API are limited to 120 requests per 15 minutes, on top of your plan's general rate limit. Check your plan's contact limit on the pricing page before you start.

Step 4: Rebuild your segments as lists

Go through the segment definitions you saved and rebuild the ones you still use as contact lists, using the tags and custom fields from your import. This is a good moment to drop segments nobody has sent to in months.

Step 5: Rebuild your templates and campaigns

Pinpoint templates use Handlebars placeholders such as {{User.UserAttributes.FirstName}}. Replace them with Cresca merge fields for the matching contact fields.

You don't have to copy every old design by hand. Describe the campaign to Cresca's AI agent, such as "Our monthly product update for existing customers, three short sections, plain and friendly", and it designs a complete email using your brand profile. A fact-check pass removes claims your brief didn't make.

Then fine-tune it in the design editor, or start from one of 36 templates.

Step 6: Recreate simple journeys

If a journey was a straight email sequence, such as a welcome series of three emails a few days apart, rebuild it as an automation workflow. Journeys that branched across channels or used push and SMS steps don't have a direct equivalent in Cresca; keep the non-email parts on AWS End User Messaging.

Step 7: Warm up, then switch

Send your first Cresca campaigns to your most engaged contacts, the people who opened or clicked recently, then widen the audience over a week or two. A sudden jump in volume from new sending records can look suspicious to mailbox providers. Our domain warm-up guide covers the schedule. Once the new setup is working, stop the old Pinpoint campaigns.

If you only send transactional email through Pinpoint

If your app calls SendMessages for password resets, receipts or verification codes, that keeps working after October 30 for existing customers. But it's a good time to move, and the change is small. With Cresca's transactional email API, one request sends an email from your verified domain:

curl -X POST 'https://api.cresca.xyz/api/v1/emails' \ -H 'Authorization: Bearer cr_live_xxxxxxxxx' \ -H 'Content-Type: application/json' \ -H 'Idempotency-Key: password-reset/req_8f2a' \ -d '{ "from": "Acme <hello@acme.com>", "to": "user@example.com", "subject": "Reset your password", "html": "<p>Click the link to reset your password. It expires in 1 hour.</p>" }'

What you get that a bare send API doesn't give you:

  • Templates with versions. Move your Pinpoint email templates into Cresca, publish them, and send by alias with {{{VARIABLE}}} values. Editing a draft never changes what your app sends.
  • Safe retries. The same Idempotency-Key and body within 24 hours returns the original response instead of sending twice.
  • The right suppression rules. A marketing unsubscribe never blocks a password reset, while hard bounces and spam complaints do.
  • A log for every email, with a per-recipient timeline, kept for 30 days.
  • The same account as your campaigns, with one domain setup and one monthly email allowance.

The quickstart takes you from a verified domain to a first email, and the transactional email API guide covers every endpoint with code.

What Cresca does not replace

Pinpoint did more than email, so be clear about what moves where:

  • SMS, voice, push and OTP: Cresca is email only. Keep these on AWS End User Messaging, where the Pinpoint channel APIs already live.
  • In-app messaging: not offered by Cresca, and not supported by AWS after October 30 either.
  • Event streaming and mobile analytics: move these to Amazon Kinesis.
  • Webhooks and SMTP: Cresca's API doesn't offer outbound webhooks or an SMTP relay yet. Check delivery with the API or in the dashboard.
  • A/B testing: not offered in Cresca today.

A one-week migration checklist

  1. Day 1: Export endpoints, segment, campaign and journey definitions, templates and the last 3 months of KPIs.
  2. Day 1: Create a Cresca account and add your sending domain.
  3. Day 2: Publish the DNS records and verify the domain. Save your brand profile.
  4. Day 2: Clean the endpoint export with the script above and import it.
  5. Day 3: Rebuild the segments you still use as lists.
  6. Day 3–4: Rebuild your main templates and campaigns, and send tests to yourself.
  7. Day 4: Move transactional sends to POST /emails, with an idempotency key.
  8. Day 5 onwards: Send to your most engaged contacts first, then widen the audience.
  9. Before October 30: Confirm nothing still depends on Pinpoint segments, campaigns or journeys.

Frequently asked questions

When does Amazon Pinpoint shut down?

AWS ends support on October 30, 2026. After that, the Pinpoint console and its endpoints, segments, campaigns, journeys and analytics can no longer be used. Pinpoint stopped accepting new customers on May 20, 2025.

Will my Pinpoint emails stop sending?

Campaigns and journeys stop, because they depend on the retired engagement features. Direct sends through the SendMessages API continue for existing customers, though AWS recommends moving email to SES or another provider for the long term.

What is the best Amazon Pinpoint alternative for email marketing?

It depends on what you used Pinpoint for. For email campaigns, audiences and app email in one place, an email marketing platform such as Cresca replaces the engagement features, adds an AI email designer and keeps transactional email in the same account. For SMS and push, use AWS End User Messaging.

Can I keep my sending domain?

Yes. Add the same domain in Cresca and publish its DNS records next to your existing ones. Cresca never overwrites existing records, so you can run both while you migrate.

What happens to people who opted out in Pinpoint?

Leave them out of your import. An opt-out is still valid after you change platforms, and emailing those people again breaks their trust and, in many countries, the law.

How much does Cresca cost?

Cresca is free for 30 days with no credit card. Paid plans are $29, $49 or $99 a month, sized by contacts and monthly emails, and every plan includes the transactional email API. See pricing.

Start your migration today: try Cresca free for 30 days, or go straight to the API quickstart if you only need to move transactional email.

Continue learning