All posts
AWS Architecture

Build Your Own Pinpoint on AWS, and Make It Better: Segments in SQL, Journeys, Holdouts and Feedback Loops

By

November 2, 2026

8 min read

A self-hosted replacement for Pinpoint is five parts: first-party events, a profiles table, segments as SQL, sending through SES and End User Messaging, and journeys on Step Functions or Lambda durable functions. What makes it better than Pinpoint ever was: holdout groups that measure real lift, one identity from first visit to revenue, and loops that learn from every send.

Pinpoint Alternatives
Product Analytics
Amazon SES
Step Functions
Own Your Data

Pinpoint's weakness was never sending. It was that its analytics stopped at the message: delivered, opened, clicked. Whether a campaign changed what people did, and whether that was worth anything, was a separate project nobody finished. Building your own is the chance to put that question at the centre.

The five parts

Part

On AWS

Notes

Events

A small SDK posting to your own collector, Data Firehose into S3, queried with Athena

Every page view, app action and message event in one place. About $1.50 a month of ingestion at 10M events.

Profiles

A contacts table in Postgres or DynamoDB

Channel addresses, consent with its source and time, preferences, time zone, suppression flags

Segments

SQL over events and profiles, run on demand or nightly

Versioned definitions in code or a table, so "who was in the segment" is answerable after the fact

Sending

Amazon SES for email ($0.10 per 1,000); AWS End User Messaging for SMS, voice, push and OTP

The same sending APIs Pinpoint used

Journeys

EventBridge for triggers; Step Functions or Lambda durable functions for multi-step flows; EventBridge Scheduler for "send at"

Durable functions can wait for days between steps without paying for the wait

Want a second opinion on this for your system?

Book a free 30-minute call. You'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.

The guardrails Pinpoint gave you for free

  • Suppression: bounces, complaints and unsubscribes are checked before every send, not after.

  • One-click unsubscribe (RFC 8058) in every bulk email, as Gmail and Yahoo require for bulk senders.

  • Frequency caps per person across all campaigns, and quiet hours in their time zone.

  • A consent record per channel with where and when it was given.

  • An idempotency key per send, so a retried job doesn't message someone twice.

Making it ten times better

Pinpoint measured

Measure instead

How

Opens

Lift: the difference a message made

A holdout group in every campaign (say 10%, assigned by a hash of the user id), compared on the outcome you care about

Clicks

Outcomes: sign-up, purchase, renewal, booking

Tracked links per message, and one visitor id from first visit to the order, so the join is one SQL query

A campaign at a time

Every message's effect on the next 30 days

Messages are events in the same lake as everything else

Nothing about why

What people tell you

Survey answers stored per person and usable in segments ("wants SSO", "on Amplify Gen 1")

Feedback loops that run themselves

  • People who haven't engaged with the last ten messages are suppressed automatically, which protects deliverability more than any template change.

  • Send time per person, learned from when they actually act, not when they open.

  • Each campaign's lift written back to a table, so the next segment can exclude people a message does nothing for.

  • Variants, including AI-written ones, judged by holdout lift on outcomes, never by opens.

What it costs to run

For 50,000 contacts and four emails each a month: 200,000 emails on SES is $20, the event pipeline a few dollars, Athena cents, Lambda and Step Functions small change. No per-contact fee, so a growing list doesn't grow the bill. The real cost is the build: a few weeks for the core, more for a journey UI that non-engineers use.

hoolco Monthly Review

Once a month: what changed in tech that month and what it means for you, from cloud and AI to security and the tools you build with. Every item links to its source. No sales pitch, unsubscribe in one click.

As of November 2, 2026. Provided as is, for general information, and accurate to the best of our knowledge on the date shown. Not legal, compliance, tax, financial or other professional advice. Prices, limits and vendor services change; check current vendor documentation before relying on anything here. Terms of use.