Ecommerce
Post-Purchase Email Sequence: The Complete Ecommerce Playbook for Repeat Sales
Most stores rewrite their abandoned cart flow three times and ship whatever order confirmation the platform gave them in 2019. For anything customers can buy again, that is backwards.
By The SendDoggie Team · September 2026 · 22 min read
Most ecommerce stores spend far more time optimising the emails that happen before a purchase than the emails that happen afterward.
Abandoned cart flows get rewritten. Welcome sequences get A/B tested. Product pages get redesigned. Then the customer buys, and the store sends a generic order confirmation followed by silence.
That is a problem if you sell anything customers can buy again.
A good post-purchase email sequence does more than ask for a review or send a discount. It coordinates order communication, product education, customer feedback, replenishment reminders and retention, while keeping transactional email separate from marketing email.
The difficult part is not writing seven emails. It is getting the events, timing, segmentation, consent, suppression rules and deliverability architecture right.
This guide covers how to build the sequence from the ground up: practical timing formulas, segmentation logic, DNS and authentication considerations, technical examples, the implementation mistakes that produce visible bugs, and how to troubleshoot each one.
What is a post-purchase email sequence?
A post-purchase email sequence is a set of automated emails triggered by a customer's order and the events that happen afterward. A typical sequence runs through order confirmation, shipping notification, delivery notification, product education, a review request, a replenishment reminder, a cross-sell, and finally a handoff to a win-back sequence.
The important detail is that these emails should not all be triggered in the same way. Some are transactional. Others are marketing. That distinction affects consent, unsubscribe handling, suppression logic and deliverability.
Where should the sequence end?
A post-purchase sequence needs an explicit exit condition. There are three realistic outcomes: the customer reorders, in which case the sequence restarts with different content because they are no longer a first-time buyer; the customer passes the expected reorder window without purchasing, and moves into a separate win-back flow; or something goes wrong with the order, and they move into a support path instead.
Without an exit condition, customers stay in the sequence indefinitely and eventually receive messages like "How are you enjoying your new coffee?" fourteen months after buying it.
Transactional vs marketing: the distinction that changes everything
One of the most important decisions in a post-purchase system is deciding whether an email is transactional or marketing. The easiest way to think about it is to ask a single question:
Why is this email being sent?
An email sent because a specific transaction requires communication is generally transactional: order confirmation, payment receipt, shipping notification, delivery notification, password reset, order cancellation.
An email whose purpose includes generating another purchase or promoting products is marketing: product recommendations, replenishment reminders, cross-sells, promotional offers, and — depending on the implementation and jurisdiction — review requests.
This matters because marketing email carries different unsubscribe and consent requirements. Google states that one-click unsubscribe is required for marketing and promotional messages, while transactional messages are excluded from that requirement. Yahoo's sender guidance similarly requires bulk senders to support easy unsubscribe for marketing and subscribed messages, and to honour unsubscribes within two days.
The biggest mistake: putting promotions inside receipts
Consider this order confirmation:
Your order has been confirmed.
Order #18492
2 x Coffee Beans - $38
Shipping - $5
Tax - $3
Total - $46
Here's 20% off your next order!
SHOP NOW
You may also like:
[Product] [Product] [Product]
The problem is not simply that the email contains too much content. The problem is that the message now has a clear promotional purpose.
A receipt should communicate what was purchased, what was charged, where it is being delivered, what happens next, and how to get help. Keep promotional content in a separate marketing stream.
Why this is worth being strict about. A receipt is one of the few emails a customer will actively look for, and one they will contact support about if it does not arrive. Turning it into a promotional message invites the filtering treatment that promotional mail receives — and the cost of a receipt landing in spam is a support ticket, a duplicate order or a chargeback, not just a missed sale.
Build a suppression matrix before building the flow
Do not start by designing email templates. Start by defining the states a customer can be in.
| Customer state | Order confirmation | Shipping | Review | Replenishment | Cross-sell |
|---|---|---|---|---|---|
| Marketing subscribed | Send | Send | Send | Send | Send |
| Marketing unsubscribed | Send | Send | No | No | No |
| Spam complaint | Send if required for the order | Send if required | No | No | No |
| Hard bounce | Investigate delivery separately | Investigate separately | No | No | No |
| Order cancelled | Send cancellation | No | No | No | No |
| Erasure request | Follow applicable legal and data-retention requirements | No marketing | No marketing | No | |
Your system should also account for the privacy, consumer-protection and communications laws in the markets where you operate. The engineering principle underneath all of them is the same:
Marketing suppression should not accidentally suppress required transactional communication.
This is why "unsubscribed" should never be modelled as a universal send_email = false flag. Model communication permissions separately:
{
"marketing_status": "unsubscribed",
"transactional_email": true,
"spam_complaint": false,
"hard_bounce": false
}
Your sending service can then evaluate the message type before applying suppression.
The sequence, email by email
1. Order confirmation
Trigger: payment successfully captured. Timing: immediately.
The order confirmation is usually the customer's first post-purchase interaction with your company, and it answers one question: did my order actually go through?
Include the order number, product name, product image, quantity, price, discounts applied, shipping cost, tax, total, delivery address, the estimated shipping or delivery window, a support contact, and an order-management link if you have one.
Order #18492
2 x Coffee Beans - $38.00
Shipping - $5.00
Tax - $3.00
Total - $46.00
Shipping to:
John Smith
123 Main Street
Austin, TX 78701
Expected dispatch:
September 24-25
Need to change something?
Contact support before your order ships.
Showing the delivery address back to the customer while the order is still editable is how they catch their own typos, and every one they catch is a reshipment you do not pay for.
Avoid turning the receipt into a product catalogue. A small amount of relevant educational information can be useful; promotional cross-sells belong elsewhere.
2. Shipping notification
Trigger: shipment created and tracking number assigned. Timing: immediately after the event.
Do not trigger this simply because an order exists. Trigger it when you actually have shipment information.
Include the carrier, tracking number, tracking URL, order number, the items in this shipment, and the expected delivery date if available. Make the tracking number selectable text as well as a link — a meaningful share of people paste that number into the carrier's own site rather than trusting a link in an email.
Your order is on the way.
Order: #18492
Carrier: UPS
Tracking: 1Z999AA10123456784
Track your package
Multi-shipment orders are an edge case worth handling
Suppose an order contains coffee, a mug and a grinder, but the coffee and mug ship today and the grinder ships next week. Do not send "your entire order is on the way." Associate shipment events with individual fulfilment records instead:
Order #18492
Shipment 1:
Coffee + Mug
UPS tracking: XXXXX
Shipment 2:
Grinder
Expected to ship: September 28
This prevents customers from thinking something is missing, which is otherwise a guaranteed support ticket.
3. Delivery and product education
Trigger: carrier reports delivered. Recommended delay: approximately one day.
A delivery notification is useful, but the more valuable email is the one that helps the customer actually use the product. The goal is not "thanks for your purchase." The goal is to help the customer succeed with what they bought.
For a food brand that means storage instructions, serving suggestions, recipes and pairing ideas. For skincare, application instructions, frequency, expected usage and storage. For electronics, setup, charging, a first-use guide and troubleshooting. For hardware, a quick-start guide, installation, configuration and support documentation.
This matters because a customer cannot evaluate a product they never properly used — and a product sitting unopened in a cupboard produces no second order.
4. Review request
Trigger: delivery plus a sufficient product-use period.
Do not use one universal review delay for every product. A phone case may be reviewable immediately. A skincare product may require weeks of use. Coffee can be tasted quickly, but a large package will not be finished.
review_date = delivery_date + category_specific_usage_period
| Product | Possible review window |
|---|---|
| Phone case | 1-3 days |
| Clothing | 3-7 days |
| Coffee | 3-7 days |
| Food product | 3-14 days |
| Skincare | 14-30+ days |
| Supplement | Category-dependent |
These are implementation examples, not universal benchmarks. Your own product usage data should eventually determine the timing.
Ask for one action. Do not combine "leave a review" with "follow us on Instagram," "refer a friend," "join the loyalty programme" and "buy another product" — a message with five requests gets none of them.
5. Replenishment reminder
Trigger: a calculated replenishment window after delivery. Cancel if: the customer reorders before the reminder fires.
For consumable products this is one of the most useful post-purchase automations, and the timing should be based on consumption rather than an arbitrary calendar number. Instead of "send a reminder 30 days after every order," use delivery_date + calculated_reorder_window.
The cancellation rule is not optional. Without it, a customer who reordered yesterday receives "running low on coffee?" today — an automation bug the customer can see.
6. Cross-sell
Cross-selling should generally come after the customer has demonstrated some product satisfaction or repeat purchasing behaviour. A simple segmentation approach:
order_count = 1
-> education + review + replenishment
order_count >= 2
-> reorder + complementary products
The recommendation should have a logical relationship to what the customer bought. Someone who has bought coffee beans twice is a reasonable candidate for filters, a grinder, a mug or a storage container. Do not send random products simply because they are in the catalogue.
7. Handoff to win-back
Eventually the customer leaves the post-purchase lifecycle. Once the expected reorder window has passed and a grace period has elapsed with no purchase, they belong in a win-back sequence with a different message.
The threshold depends on your product. A customer buying coffee every 30 days becomes inactive much sooner than a customer buying a $500 appliance. The important thing is to define the rule explicitly rather than leaving it implicit.
Replenishment timing: the actual maths
The replenishment email works when it arrives shortly before the customer runs out, because the reorder decision happens at the moment they reach for the jar and find it empty.
If you have repeat-purchase data
Calculate the median time between relevant purchases, using customers who actually reordered the product rather than mixing them with customers who never came back:
reorder_window = median(days between order 1 and order 2)
send_at = delivery_date + (reorder_window x reminder_factor)
A factor such as 0.75 is a reasonable starting hypothesis, but it should be validated against your own customer behaviour rather than treated as a universal rule.
Why median rather than mean?
Suppose your repeat-order intervals are:
25 27 29 30 31 34 420
The 420-day customer distorts an average dramatically — it pulls the mean to about 85 days, which describes none of these customers. The median is 30, which describes six of the seven. Medians are far less sensitive to extreme values, and reorder intervals always have a long tail.
If you do not have repeat-purchase data yet
New stores often lack enough history. Estimate consumption instead:
reorder_window = package_size / expected_usage_per_week x 7
Suppose a 500ml bottle is used about four times per week, and each use consumes about 30ml:
Weekly usage = 4 x 30
= 120 ml
Estimated duration = 500 / 120
= 4.17 weeks
In days = 4.17 x 7
= 29 days
You could then test a reminder before that estimated depletion point. The estimate is only a starting point — once enough purchase history exists, replace the assumption with observed behaviour.
Measure order 1 to 2 separately from order 2 to 3
Do not assume every reorder interval is identical. A customer may take longer to make their first repeat purchase because they are still evaluating the product. After they become a repeat buyer, subsequent orders often follow a different pattern. Store these intervals separately if your data supports it.
Timing: anchor emails to events, not order dates
One of the most common implementation mistakes is building a sequence as a fixed ladder of delays — day 0 confirmation, day 3 shipping, day 7 review, day 30 replenishment. That assumes fulfilment happens predictably. Real orders do not work that way.
The review email arrives before the customer receives the product. The customer does not read that as a scheduling bug; they read it as a store that is not paying attention, which is precisely the impression the sequence exists to prevent.
The correct model is event-driven:
| Trigger | Example delay | |
|---|---|---|
| Confirmation | Payment captured | Immediate |
| Shipping | Tracking created | Immediate |
| Delivery education | Delivered | +1 day |
| Review | Delivered | + category usage period |
| Replenishment | Delivered | + calculated window |
This is why a proper ecommerce integration should expose fulfilment events rather than only order-created events.
What if you do not have a delivery webhook?
Some stores cannot receive carrier delivery events. In that case you need an estimate:
estimated_delivery_date = dispatch_date + 90th_percentile_transit_time
Why the 90th percentile rather than the average? Because the cost of being early and the cost of being late are not the same. A review request that arrives two days late is slightly mistimed. One that arrives before the package does tells the customer immediately that the automation is wrong. If you offset by the average, you are early for roughly half of all orders.
The exact percentile and transit data should come from your own carrier and service-level data where possible.
First-time buyer vs repeat buyer
If you implement only one customer segmentation rule initially, make it first-time buyer versus repeat buyer. These customers need different communication.
A first-time buyer is still evaluating the brand, so the emails should focus on reassurance, product education, support and usage instructions. A repeat buyer already knows the brand, so the emails should focus on reordering, convenience, complementary products and new releases.
| First-time buyer | Repeat buyer | |
|---|---|---|
| Confirmation | More context | Concise |
| Product education | Strong focus | New or useful information |
| Review | Request | Only if useful |
| Replenishment | Explain the product | Fast reorder |
| Cross-sell | Usually wait | More relevant |
| Subscription | Test later | Potentially relevant |
This segmentation requires very little data. At minimum, order_count is enough to create the first split, and every ecommerce platform already stores it.
Deliverability for post-purchase sequences
Post-purchase email has a deliverability problem that marketing campaigns do not. Some of these messages are operationally important. A missing promotional email may cost a sale. A missing order confirmation can create support tickets, duplicate orders, customer anxiety, payment disputes and negative reviews.
Use separate sending streams
A practical architecture separates the two streams by subdomain:
mail.example.com -> marketing
orders.example.com -> transactional
From: hello@mail.example.com (marketing)
From: orders@orders.example.com (transactional)
The exact domain architecture depends on your setup, provider and reputation strategy. Do not assume that putting mail on a subdomain isolates reputation completely — receiving providers evaluate many signals, including domain and authentication relationships. The purpose is a clean operational separation between the two streams, so that a bad marketing send is not able to take your receipts down with it.
SPF
Every sending domain needs a deliberate authentication configuration. Amazon SES documents SPF, DKIM and DMARC as the core email authentication mechanisms, with DMARC relying on SPF and/or DKIM alignment to authenticate the visible From domain.
SPF tells receiving systems which infrastructure is authorised to send mail for a domain:
example.com
TXT
v=spf1 include:example-sender.com ~all
Do not copy that record blindly. Your SPF record must contain the mechanisms required by your actual sending infrastructure. With Amazon SES, SPF behaviour depends on whether you use the default SES MAIL FROM domain or configure a custom one; AWS documents that a custom MAIL FROM setup requires its own SPF record and MX configuration.
The most common SPF mistake
Do not publish multiple SPF TXT records:
v=spf1 include:provider-a.com ~all
v=spf1 include:provider-b.com ~all
SPF must be published as a single policy record for the domain. If multiple systems send mail, combine the mechanisms into one record. Remember too that SPF has a DNS lookup limit — adding providers indiscriminately will eventually break SPF evaluation entirely.
DKIM
DKIM adds a cryptographic signature to outbound email. The sender publishes a public key in DNS, and the sending system signs messages with the corresponding private key:
selector1._domainkey.example.com
TXT
"v=DKIM1; k=rsa; p=PUBLIC_KEY..."
The actual selector and public key are generated by your email provider. With Amazon SES Easy DKIM, AWS generates the key pair and signs outgoing mail automatically, and currently recommends 2048-bit keys where supported.
DKIM troubleshooting
- Check the selector actually being used in the signature.
- Check that the DNS record exists and resolves.
- Check for accidental quotes or formatting changes.
- Check whether your DNS provider has modified or wrapped the record.
- Check that the sending region and provider are configured correctly.
- Inspect the actual
Authentication-Resultsheader in a delivered message.
DMARC and alignment
DMARC tells receiving systems what to do when authentication and alignment checks fail. A monitoring policy looks like this:
_dmarc.example.com
TXT
v=DMARC1; p=none; rua=mailto:dmarc@example.com
And a quarantine policy:
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com
Do not jump straight to an aggressive policy without understanding your legitimate sending sources. AWS recommends a gradual rollout, beginning with monitoring at p=none and reviewing authentication results before increasing enforcement.
The concept that trips people up is alignment. SPF and DKIM can both pass while DMARC still fails, because DMARC checks whether the authenticated domain matches the domain the recipient actually sees in the From header.
Gmail and Yahoo requirements
For bulk senders, Google currently recommends keeping user-reported spam rates below 0.1% and preventing them from reaching 0.3% or higher, and distinguishes marketing and promotional messages from transactional messages for the one-click unsubscribe requirement. Yahoo's sender guidance requires bulk senders to use SPF and DKIM, publish a valid DMARC policy at minimum p=none, support easy unsubscribe for marketing and subscribed messages, and keep spam complaint rates below 0.3%.
These requirements are one more reason to keep marketing and transactional mail structurally separate. If you are already seeing placement problems, the diagnostic checklist here works through the usual causes, and the full authentication setup is covered here.
Do not use a no-reply address
Avoid no-reply@example.com, especially for transactional email. Customers frequently reply to order confirmations, shipping notifications and delivery messages — to change an address, report a damaged product, ask about delivery, cancel an order or ask a product question. Amazon SES itself recommends avoiding no-reply addresses because they prevent recipients from responding to the sender.
Use something like orders@example.com and route replies into a monitored support workflow. A no-reply address turns a fixable problem into a chargeback or a public review.
A practical flow architecture
Put together, a production implementation looks like this. The important property is that it is event-driven, not a list of delayed emails.
Example data model
A basic customer and order model might store:
{
"customer_id": "cus_123",
"marketing_status": "subscribed",
"order_count": 2,
"last_order_at": "2026-09-10T14:30:00Z",
"last_delivery_at": "2026-09-14T17:20:00Z",
"product_history": [
{ "product_id": "coffee-500g", "order_count": 2 }
]
}
Your automation engine can then make decisions from those fields:
if customer.order_count == 1:
send_first_purchase_flow()
elif customer.order_count >= 2:
send_repeat_buyer_flow()
And the cancellation rule that prevents the most visible bug in the whole sequence:
if new_order_created(customer):
cancel_pending_replenishment(customer)
The exact implementation depends on your ecommerce platform and event architecture.
Common mistakes
1. Counting everything from the order date
Problem: the customer receives emails before the product arrives. Fix: trigger post-fulfilment messages from shipping and delivery events wherever possible.
2. Putting promotions in receipts
Problem: your operational email becomes promotional, and gets filtered accordingly. Fix: keep promotional content in the marketing stream.
3. Suppressing transactional mail after a marketing unsubscribe
Problem: customers stop receiving important order information. Fix: separate marketing consent from transactional communication state.
4. Not cancelling replenishment emails
Problem: the customer receives a replenishment reminder after already reordering. Fix:
IF new_order_created
THEN cancel_pending_replenishment_email
5. Sending the same sequence to every customer
Problem: first-time and repeat customers receive irrelevant content. Fix: segment using order history.
6. Using one replenishment window for every product
Problem: a 30-day schedule does not work equally well for coffee, cosmetics, clothing and electronics. Fix: calculate timing per product or product category.
7. Publishing multiple SPF records
Problem: SPF evaluation fails. Fix: maintain one SPF policy record containing all required mechanisms.
8. Enabling strict DMARC enforcement without auditing senders
Problem: legitimate systems fail authentication and have their messages quarantined or rejected. Fix: start at p=none and identify every legitimate sender before enforcing.
9. Using a no-reply address
Problem: customers cannot respond to order messages. Fix: use a monitored reply address.
10. Leaving customers in the post-purchase flow forever
Problem: customers receive increasingly irrelevant emails. Fix: define the handoff to win-back explicitly.
Troubleshooting
Review requests arrive before delivery
Check the trigger. If your workflow says order_created + 7 days, it will routinely fire before delivery. Prefer delivered + usage_period. If you do not have delivery events, estimate delivery from your dispatch date and actual carrier transit data.
Replenishment emails are ignored
Check two things. First, is the timing wrong? Compare your configured reminder against the actual measured time between repeat purchases. Second, are customers receiving reminders after reordering? Query the customers who received the reminder and check whether they had already placed another order. If they had, your cancellation logic is broken.
Order confirmations land in spam
Start with authentication — confirm SPF, DKIM and DMARC all pass on the sending subdomain, since transactional streams are often set up quickly and never revisited. Then inspect the email itself. If the supposed receipt contains discount banners, multiple promotional products, "shop now" sections and aggressive offers, you have built a message that looks like marketing. Also check sending reputation, complaint signals, bounce behaviour and recent volume changes.
Customers are not receiving shipping notifications
Check your suppression logic. A common implementation mistake looks like this:
if contact.unsubscribed:
return
That code does not distinguish between marketing and transactional email. Instead:
if message_type == "marketing" and contact.marketing_status != "subscribed":
return
if message_type == "transactional":
send_transactional_message()
Your actual implementation should also incorporate complaint, bounce, legal, account and order-state logic. This failure is invisible from your side — the email looks correctly skipped — until a customer complains.
SPF passes but DMARC fails
SPF passing does not mean DMARC passes. Check alignment between the visible From domain and the authenticated domain:
From: orders@example.com
MAIL FROM: bounce@mailer.example.net
SPF authenticates mailer.example.net, which does not align with example.com. DKIM alignment can satisfy the DMARC requirement instead, if the DKIM signing domain aligns with the visible From domain. AWS documents these alignment requirements in its SES DMARC guidance.
The DKIM DNS record exists but authentication fails
Check the actual selector being used. selector1._domainkey.example.com is not interchangeable with selector2._domainkey.example.com — the selector in the DKIM signature must correspond to the key published in DNS. Inspect the message headers rather than guessing from the DNS dashboard.
Pre-launch checklist
Transactional
- Order confirmation triggers after successful payment
- Shipping email triggers after actual shipment creation
- Tracking number is present and selectable
- Delivery events are handled where available
- Multi-shipment orders are supported
- Transactional replies go to a monitored inbox
Marketing
- Marketing consent is stored separately from transactional state
- Marketing unsubscribe suppresses marketing messages only
- Spam complaints suppress all future marketing
- One-click unsubscribe is implemented where required
- Replenishment emails can be cancelled
- Win-back has a defined entry condition
Deliverability
- SPF configured as a single record with the right mechanisms
- DKIM configured and the selector verified
- DMARC published
- DMARC alignment verified, not just record existence
- All sending domains authenticated
- Transactional and marketing streams deliberately separated
- Bounce and complaint events monitored
- Sending volume changes controlled
Automation
- First-time and repeat customers are segmented
- Review timing is based on product usage
- Replenishment timing is based on product behaviour
- Reorders cancel pending reminders
- Customers eventually exit into win-back
- Every automated email has a clear purpose
Wiring it together
Building this system manually means connecting ecommerce events, customer records, segments, email templates, sending infrastructure, suppression rules, analytics, product data, authentication and campaign logic. That becomes difficult to maintain once the number of flows increases.
The useful part of a platform here is not creating a sequence. It is being able to connect the whole chain:
Customer -> Order -> Fulfilment event -> Segment -> Email -> Conversion
Platforms such as SendDoggie combine campaign management, contact management, audience segmentation, analytics and sending infrastructure in one place, so the same underlying segmentation — first-time buyers, repeat buyers, customers due for replenishment, customers who have not reordered, customers who bought a specific product — can drive different campaigns without rebuilding the data plumbing each time. Having product information available inside email creation also avoids manually rebuilding product blocks for every campaign.
The platform should support the workflow, not replace the underlying deliverability and consent rules. Those remain your responsibility whichever tool you use.
Want to build this without wiring it together yourself? Create a free SendDoggie account to build the sequence, segment first-time and repeat buyers, and keep transactional and marketing suppression separate.
Key takeaways
- A post-purchase sequence is an event-driven customer lifecycle, not a series of delayed emails.
- Separate transactional and marketing communication. They have different purposes, consent bases, suppression rules and deliverability requirements.
- Do not turn receipts into promotional newsletters. It makes your most operationally important email filterable as marketing.
- Anchor fulfilment-related emails to real events such as payment capture, shipment creation and delivery.
- An unsubscribed customer still gets their shipping notification. Model marketing consent and transactional state as separate fields, never one boolean.
- Use product-specific timing for review and replenishment emails rather than arbitrary day counts.
- Calculate replenishment windows from the median gap between orders, using repeat customers only — the mean is destroyed by long-tail outliers.
- With no history, estimate the window from package size and expected usage, then replace the estimate with measured behaviour.
- Cancel pending replenishment messages when a customer reorders. Missing this is the most visible bug in the sequence.
- Segment first-time buyers from repeat buyers. One needs reassurance and education, the other needs a fast reorder.
- With no delivery webhook, offset from dispatch by the 90th percentile transit time, not the average — being early is far worse than being late.
- Use SPF, DKIM and DMARC deliberately. Authentication is part of the sending infrastructure, not a box to tick once.
- Verify DMARC alignment, not simply whether the records exist. SPF and DKIM can both pass while DMARC fails.
- Monitor Gmail and Yahoo sender requirements as part of ongoing deliverability operations.
- Do not use a no-reply address for customer-facing transactional mail.
- Define the exit from post-purchase to win-back explicitly, or customers stay in the flow forever.
A well-built post-purchase system should feel almost invisible to the customer. The confirmation arrives when the payment succeeds. The tracking email arrives when the parcel ships. Useful information arrives while the product is being used. The reorder reminder appears when they are about to need another one.
That is what good lifecycle automation does. Once the order is placed, this sequence — not the abandoned cart flow that won the first sale — decides whether the customer ever buys from you again.
Sources
- Gmail — Email sender guidelines
- Gmail — Email sender guidelines FAQ
- Yahoo — Sender best practices
- Amazon SES — Authenticating email with SPF
- Amazon SES — Authenticating email with DKIM
- Amazon SES — Complying with DMARC
- Amazon SES — Using a custom MAIL FROM domain
- Amazon SES — Tips and best practices