Building Zendrop's Promotional Revenue System Across Email, SMS, Landing Pages, and In-App Messaging
Table of contents
- Executive summary
- Company and customer context
- The limitations of isolated promotional sends
- Designing the reusable campaign framework
- Audience and eligibility architecture
- Coordinating email, SMS, landing pages, and in-app placements
- Black Friday execution
- Revenue results
- Purchase suppression and follow-up
- Campaign production workflow
- Operational lessons
- How the framework could be extended
Executive summary
Zendrop's biggest promotional opportunities could not be handled as isolated email sends.
The company had users in different plans, different trial states, different activation stages, and different product contexts. A broad promotional send might generate revenue, but it could also create overlap, irrelevant offers, and messy reporting.
I helped build a more repeatable promotional revenue system across email, SMS, landing pages, in-app placements, eligibility rules, suppression, follow-up, and reporting.
Black Friday revenue grew from about $50,000 to about $200,000. Broader lifecycle and promotional revenue grew from about $150,000 to about $700,000 year over year.
Those numbers should be read carefully. They represent attributed promotional and lifecycle revenue. They do not automatically prove pure incremental revenue without a controlled holdout or experiment.
Company and customer context
Zendrop is a dropshipping SaaS platform serving merchants at different stages of maturity.
That customer base was not one clean audience.
Customers could be:
- Newly registered.
- In a trial.
- Paying subscribers.
- On different subscription plans.
- Operating stores at different revenue levels.
- At different activation stages.
- Engaging with different Zendrop products and education programs.
That made promotional architecture harder than a calendar of offers.
A free user needed a different path than an existing Plus customer. A user who had never connected a store needed different context than someone already operating a Shopify store. A prior purchaser needed suppression and offer rules so the same promotion did not create a strange customer experience.
The limitations of isolated promotional sends
The old operating model treated promotions too much like one-off sends.
That creates problems fast:
- Users receive offers they are not eligible for.
- Existing customers get beginner messaging.
- Recent purchasers receive the same offer again.
- Email and SMS overlap without a clean timing model.
- Landing pages say one thing while in-app placements say another.
- Reporting shows revenue, but the team cannot easily explain which audience, offer, or channel drove it.
The issue was not only copy. The issue was coordination.
A major promotion needs an operating system around it.
Designing the reusable campaign framework
The framework started before copy.
Every major promotion needed the same set of questions answered:
- What is the revenue objective?
- Which customers are eligible?
- Which customers should be excluded?
- Which offer belongs to which segment?
- What should email do?
- What should SMS do?
- What should the landing page say?
- What should the product surface show?
- When should follow-up stop?
- How will purchase events update the journey?
- How will revenue be measured?
The architecture looked like this:
Customer and subscription data
|
v
Eligibility and exclusion rules
|
v
Audience segmentation
|
v
Offer assignment
|
v
Email, SMS, and in-app coordination
|
v
Landing-page conversion
|
v
Purchase and subscription events
|
v
Suppression and follow-up
|
v
Revenue reportingThat model turned each promotion into a repeatable campaign system instead of a scramble.
Audience and eligibility architecture
Eligibility mattered because Zendrop had multiple customer states.
The segmentation model considered:
- Subscription status.
- Current plan.
- Trial state.
- Prior purchases.
- Recent purchases.
- Product activation.
- Webinar engagement.
- Education engagement.
- Source or campaign history.
The decision tree was simple in concept:
Contact enters promotion planning
|
v
Is the contact subscribed and reachable?
|
+-- no: exclude
|
v
Is the contact eligible for this offer?
|
+-- no: suppress
|
v
Has the contact already purchased this offer?
|
+-- yes: suppress or send post-purchase path
|
v
Assign segment-specific message and channel planThe work was less glamorous than a big campaign idea. It was the part that kept the campaign from annoying the wrong customers.
Coordinating email, SMS, landing pages, and in-app placements
The channel plan had to make the campaign feel like one experience.
Email carried the fuller argument: offer framing, benefits, social proof, timing, and follow-up. SMS handled immediacy and reminder moments. Landing pages needed to match the offer and audience. In-app placements caught customers while they were already inside the product.
A simplified orchestration timeline looked like this:
Pre-launch
- audience build
- eligibility QA
- landing-page alignment
- in-app placement setup
Launch
- email announcement
- in-app promotion live
- SMS only where appropriate
Mid-campaign
- engagement-based follow-up
- reminder timing
- suppression updates
Deadline
- urgency messaging
- final SMS reminder where appropriate
- purchase-event exits
Post-purchase
- stop promotional reminders
- confirm next step
- update revenue reportingThe channels had different jobs, but they had to respect the same customer state.
Black Friday execution
Black Friday was the clearest proof that the operating model mattered.
The campaign used coordinated promotion across:
- Email.
- SMS.
- Landing pages.
- In-app placements.
- Offer pages.
- Follow-up logic.
- Audience-specific messaging.
- Source and campaign tracking.
The campaign also used stronger segmentation and offer alignment. Free users, Plus users, UBB users, prior purchasers, and engaged non-buyers did not all need the same message.
Black Friday revenue grew from about $50,000 to about $200,000.
That was a campaign result, but the lesson was operational. The promotion worked better because the system around the promotion was stronger.
Revenue results
Across the broader lifecycle and promotional program, attributed revenue grew from about $150,000 to about $700,000 year over year.
That number included lifecycle and promotional revenue attributed to the work. It should not be confused with total company revenue or pure causal incrementality.
The distinction matters:
- Attributed revenue means tracked revenue connected to a campaign, flow, or channel.
- Assisted revenue means lifecycle touchpoints contributed along the path.
- Last-click revenue means the final tracked click came from a specific channel.
- Incremental revenue means the revenue would not have happened without the campaign.
Without a holdout group, attribution shows a tracked relationship. It does not prove causality on its own.
That is not me downplaying the work. That is the honest way to talk about lifecycle measurement.
Purchase suppression and follow-up
Purchase events had to stop the wrong messages.
Promotion follow-up scheduled
|
v
Purchase event received?
|
+-- yes:
| update status
| suppress remaining promo reminders
| move to post-purchase messaging
|
+-- no:
continue eligible follow-upThis is one of the easiest parts to skip and one of the fastest ways to make a campaign feel sloppy.
The customer should not buy and then keep receiving countdown messages asking them to buy.
Campaign production workflow
The reusable workflow looked like this:
Define offer
|
v
Map eligible audiences
|
v
Build exclusions
|
v
Create channel plan
|
v
Build landing and in-app surfaces
|
v
QA segments, links, tracking, and suppression
|
v
Launch
|
v
Monitor performance and revenue
|
v
Document learnings for the next campaignThe important part was making campaign execution reusable.
Promotional revenue gets stronger when each launch teaches the next one. The team can reuse timing patterns, QA checklists, suppression logic, and reporting structure instead of starting over every time.
Operational lessons
Campaigns get better when the infrastructure gets better.
The gains came from better segmentation, better eligibility rules, better offer alignment, better channel coordination, better customer-state awareness, and better execution discipline.
Subject lines mattered. Copy mattered. But the deeper work was the system around the campaign.
The mature version of promotional lifecycle marketing is not a calendar with more sends. It is a revenue operating model that knows who should receive what, when they should receive it, when they should stop receiving it, and how the business will measure what happened.
How the framework could be extended
The same framework can support any major launch:
- Seasonal campaigns.
- Plan upgrades.
- Webinar offers.
- Product launches.
- Education-driven promotions.
- Winback offers.
- Expansion campaigns.
The extension path is straightforward:
More reliable customer state
|
v
Cleaner eligibility rules
|
v
More personalized offer paths
|
v
Better attribution and holdout testing
|
v
Stronger promotional decision-makingThat is the point of building the operating system. Each campaign becomes easier to run and easier to learn from.
Get one retention idea, every other week
The Lifecycle Letter. One actionable retention idea in your inbox, no fluff, unsubscribe anytime.

