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 capability | After October 30, 2026 |
|---|---|
| Console, endpoints, segments, campaigns, journeys | No longer accessible |
| Analytics and KPI APIs | Not supported; export historical KPIs before the date |
SendUsersMessages and sending to a stored endpoint ID | Not supported |
| In-app messaging and recommenders | Not supported |
Email, SMS and voice sending with SendMessages | Continues for existing customers only |
| Email, SMS and voice templates | Continue, including create, update and delete |
| Push, push templates, OTP, phone number validation | Continue for all accounts |
| Event delivery to Kinesis or Data Firehose, metrics to CloudWatch | Continue 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.
- Endpoints (your contacts). Create a segment with no filters, so it includes every endpoint, then export it to an S3 bucket or download it.
- Segments, campaigns and journeys. Save their definitions with the
get-segment,get-campaignandget-journeyAPIs, or copy them from the console. You'll rebuild them, so screenshots of the important ones help too. - Templates. List them with
list-templates, then fetch each one withget-email-template. - Analytics. The KPI APIs, such as
get-campaign-date-range-kpiandget-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 Pinpoint | In Cresca |
|---|---|
| Email endpoints | Contacts, imported from CSV or added with the contacts API |
| Endpoint and user attributes | Custom fields and tags |
| Segments | Contact lists, built from tags and custom fields |
| Email campaigns | Campaigns: designed by the AI agent, in the design editor or from a template, sent now or scheduled |
| Simple email journeys, such as a welcome series | Automation workflows that send a sequence of emails with delays |
| Email templates | Marketing templates in the design editor; transactional templates with versions for API email |
SendMessages for app email | The transactional email API: POST /emails |
| Campaign analytics | Campaign reports: deliveries, bounces, complaints, unsubscribes, plus opt-in opens and clicks |
| Verified email identity on SES | A 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-Keyand 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
- Day 1: Export endpoints, segment, campaign and journey definitions, templates and the last 3 months of KPIs.
- Day 1: Create a Cresca account and add your sending domain.
- Day 2: Publish the DNS records and verify the domain. Save your brand profile.
- Day 2: Clean the endpoint export with the script above and import it.
- Day 3: Rebuild the segments you still use as lists.
- Day 3–4: Rebuild your main templates and campaigns, and send tests to yourself.
- Day 4: Move transactional sends to
POST /emails, with an idempotency key. - Day 5 onwards: Send to your most engaged contacts first, then widen the audience.
- 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
Related Cresca resources
External references