This is a research guide based on cited documentation. It is not a report of firsthand testing. Our editorial method

Our verdict

This is a short scenario with a few modules per route. Get three details right: the trigger event, consent and refunds. Use checkout.session.completed and check the payment status, because some payment methods finish later. [5] Only add buyers to marketing groups when Stripe recorded consent. [6] Undo the buyer group on refund, or your customer segment will slowly fill with people who are not customers. [7]

MailerLite's create-or-update behaviour makes retries mostly harmless. [3] Even so, log Stripe event IDs if anything downstream, such as a welcome automation, should run only once per purchase. [4]

The scenario at a glance

Make's Stripe Watch Events trigger is instant and creates the Stripe webhook for you when you save the module. [1] Make's MailerLite app (for accounts created after March 22, 2022) has Create/Update a Subscriber, Add Subscriber to a Group and Remove Subscriber from a Group. [2]

StepModulePurposeCredits
1Stripe Watch Events: checkout.session.completed, checkout.session.async_payment_succeeded, charge.refundedReceive purchase and refund events [1] [7]1 per event
2Router with filtersSend purchases and refunds down separate routes0 [8]
3aFilter: payment status is not unpaidSkip delayed payments until they succeed [5]0 [8]
4aStripe Make an API Call: retrieve the session with line_items expandedGet the product name for the field [1] [5]1
5aMailerLite Create/Update a SubscriberAdd or update the buyer with fields and groups [2] [3]1
3bMailerLite Remove Subscriber from a GroupTake refunded buyers out of the buyer group [2]1
OptionalData store lookup and write of the Stripe event IDStop downstream steps running twice [4]2

Map the subscriber fields

MailerLite's create endpoint takes the email, a fields object whose keys must match existing default or custom field names, and a list of existing group IDs. If the subscriber exists, MailerLite updates it, returns 200 instead of 201 and does not remove fields or groups you leave out. [3] Create the custom fields and the buyer group in MailerLite before you map them.

MailerLite fieldMap from StripeNote
emailcustomer_details.email on the Checkout SessionStripe's consent example reads the email from this field [6]
fields.last_product (custom)The product or price name from the session's line itemsLine items come from retrieving the session with line_items expanded, as Stripe's fulfillment guide does [5]
fields.promo_consent (custom)consent.promotionsKeeps a record of what the buyer agreed to [6]
groupsBuyers - Product A; add Newsletter only if consent.promotions is opt_inGroups are added, never removed, by this call [3]
resubscribeLeave offTrue would resubscribe someone who unsubscribed [3]

Consent: keep buyers and subscribers apart

Stripe's documentation says customers must agree to promotional emails before you contact them. Checkout can collect that if you create the session with consent_collection.promotions set to auto. [6] This is available only when your business and customers are in the US, and Checkout disables or limits it where local rules prohibit it. [6]

The result is stored on the session as consent.promotions. Stripe's example listens to checkout.session.completed, reads that value and stores emails for customers who consented. [6] In Make, put the newsletter group on a route with a filter for consent.promotions equal to opt_in, one of the two values Stripe documents along with opt_out, and give everyone else only the buyer group. [9]

Refunds and retries

Stripe sends charge.refunded whenever a charge is refunded, including partial refunds. [7] Route it to MailerLite Remove Subscriber from a Group for the buyer group. Decide whether a partial refund should count. If not, add a filter that checks the charge in the event was fully refunded before removing the group.

Stripe retries undelivered events for up to three days in live mode. It does not guarantee order, and it says an endpoint might occasionally receive the same event more than once. Its advice is to log the event IDs you have processed and skip ones already logged. [4] Stripe also says fulfillment can run more than once for the same Checkout Session, even at the same time, so the handler must be safe to repeat. [5]

In this scenario the MailerLite upsert is already safe to repeat. [3] Add the event-ID log when a later step is not safe, such as a module that sends a one-time email or creates an invoice.

Credit cost per sale and test plan

Make charges most modules 1 credit per operation, and routers and filters nothing. [8] A purchase runs the trigger, the session lookup and the MailerLite module, about 3 credits. With the event-ID log it is about 5, and a refund adds about 2. At 200 sales a month with logging, budget around 1,000 credits plus 2 per refund.

  • Create the buyer group, newsletter group and custom fields in MailerLite first. [3]
  • Connect Stripe with a restricted key that has only the access Make needs, or with OAuth. [1]
  • Run a test-mode purchase with consent ticked and another without, and check the groups.
  • Refund one test payment fully and one partially, and check the buyer group.
  • Resend an event from Stripe and confirm the subscriber count does not change. [4]
  • Turn on incomplete executions in Make so a MailerLite error can be retried.

Watch demos / Official walkthroughs

See how the tools work.

Videos load from YouTube only when you press play. These are provider videos, not our own product tests.

Make / Official video

Make—Building Your First Automated Workflow from Scratch

What to look for: Follow how modules connect and how data moves through the first workflow.

Watch on YouTube

Questions before you decide

Which Stripe event should add a buyer to my list?

checkout.session.completed, which Stripe sends when a Checkout Session completes. For delayed payment methods such as ACH debit, also handle checkout.session.async_payment_succeeded, because the payment succeeds later.

Will Stripe retries create duplicate MailerLite subscribers?

Not if you use Create/Update a Subscriber. MailerLite updates an existing subscriber with the same email, returning 200 instead of 201, and omitted fields or groups are not removed.

Can I add every buyer to my newsletter?

Stripe says customers must agree to promotional emails before you contact them. Checkout can show a consent checkbox, for US businesses and customers, and records the answer in consent.promotions on the session.

How long does Stripe keep retrying a webhook?

In live mode, Stripe retries delivery for up to three days with exponential backoff. In a sandbox it retries three times over a few hours.

Sources & verification

Product details and prices can change. Check the linked provider before buying.

  1. Make Apps: Stripe Accessed 30 Oct 2026
  2. Make Apps: MailerLite Accessed 30 Oct 2026
  3. MailerLite API: Subscribers Accessed 30 Oct 2026
  4. Stripe Docs: Receive Stripe events in your webhook endpoint Accessed 30 Oct 2026
  5. Stripe Docs: Fulfill orders Accessed 30 Oct 2026
  6. Stripe Docs: Collect consent for promotional emails Accessed 30 Oct 2026
  7. Stripe Docs: Types of events Accessed 30 Oct 2026
  8. Make Help: How features use credits Accessed 30 Oct 2026
  9. Stripe API: The Checkout Session object (consent) Accessed 30 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.

Your decision at a glance

The option in this guide

Full comparison

Documentation-based guidance. No tested ranking or performance score.

Automation

Make

Consider it for
Use Make to prepare weekly reminder drafts for review. Free includes 1,000 credits per month and a minimum scheduled interval of 15 minutes. Email delivery needs a connected service, which may cost extra.
Starting cost
Free plan includes 1,000 credits/month
Before you choose
Connected apps can cost extra. Free scheduled interval is at least 15 minutes; paid billing must be checked at checkout.

Checked 13 Sep 2026 · Pricing source

View Make plans

Affiliate link: we may earn a commission on an eligible purchase. Link disclosure