See which Constant Contact emails actually made money

Rank every email you sent in the last 90 days by the Shopify revenue it brought in instead of by open rate, and see which offer actually pulled.

App
Constant ContactShopifyMarketingOperationsAI ReportsEmail AutomationContent Generation
PromptCreate

I want an app that finally tells me which of my Constant Contact emails actually made money. My store runs on Shopify and my email runs on Constant Contact, and neither one can tell me the revenue behind a given send, so I want a campaign revenue board that puts the two side by side.

The main surface is a board with one row per email campaign sent in the last 90 days. Get the campaigns with the Constant Contact List Email Campaigns operation, keep the ones with a sent or done status inside the period, and pull sends, opens, clicks, bounces and unsubscribes for each from Get Email Campaign Summaries. Next to those engagement columns, show the attributed Shopify side: how many people who clicked that email went on to place an order, how many orders that was, and the total attributed revenue. Every column should be sortable, and revenue should be the default sort so I can rank my sends by money instead of by open rate. Also show revenue per thousand sends and revenue per click so a small, well targeted send is not buried under a big one.

Attribution works by matching email addresses, not by tracking pixels or tagged links, and the app should be honest about that everywhere. For each campaign, pull the click report with Get Campaign Activity Tracking Clicks, which returns the contact email address and the URL clicked. Fetch Shopify orders for the period with List Orders, using its created-at date filters, and join on a normalized email address: lowercase, trimmed, matched against the order customer email and the order contact email. An order is attributed to a campaign when the buyer clicked that campaign and the order was placed after the click and within the attribution window. Put a control at the top of the page for the attribution window, defaulting to 7 days, and let me also change the reporting period from the 90 day default. The chosen window has to appear next to every attributed number on the screen, in the board header, on each row, and in the detail view, so nobody can screenshot a figure without its window. Add a short, permanent explainer near the top saying that attributed revenue is match based rather than pixel based, that it credits orders placed under the same email address the campaign was sent to, and that orders placed under a different address will not be counted.

Give me a toggle to exclude orders that Shopify reports as refunded or cancelled. Use the financial status and cancellation fields on the order, treat refunded and partially refunded and cancelled orders as excludable, and when the toggle is on subtract them from the attributed totals rather than silently dropping the row. The board should state which setting produced the numbers currently shown. If one buyer is credited to more than one campaign inside the window, credit the most recent click before the order and note in the row that the order was contested, so I understand overlapping sends are not double counting revenue.

Clicking a campaign row opens a detail view for that send. Show the subject line, send date, and the same headline engagement numbers, then split the audience into three buckets: clicked and bought, clicked and did not buy, and opened but never clicked. Build the first two from Get Campaign Activity Tracking Clicks joined against the Shopify orders, and the third from Get Campaign Activity Tracking Opens minus everyone who appears in the click report. Each bucket lists the contacts with their email address, and the clicked and bought bucket shows order value, order date, and how many days after the click the order landed. Alongside the buckets, show a per-link breakdown from Get Campaign Activity Links with the click count on every link in the email, sorted by clicks, so I can see which offer actually pulled. Where possible, also show attributed revenue per link by looking at which URL each buyer clicked.

The board needs a Plan the next send button that kicks off a background agent. The agent reads the current period as it is on screen, including the attribution window and the refund setting, identifies the top and bottom performing campaigns by attributed revenue, and works out what separated them: subject line, send day and time, offer, and which links pulled. It then creates a follow-up list in Constant Contact with Create Contact List, named for the source campaign and the date, and adds the clicked but did not buy contacts from the best performing campaign to it with Add List Memberships (Bulk), using the contact ids returned by the click report and falling back to List Contacts filtered by email address for anyone missing an id. Next it drafts a follow up campaign with Create Email Campaign, targeted at that new list, with body copy that leans on whatever actually converted in the winning send. The draft must be left unsent.

The agent also writes its reasoning back into the app so I can read it next to the numbers before I touch send. Persist each planning run in the app with a timestamp, the period and attribution window it used, the refund setting, the campaigns it judged best and worst with their revenue figures, three to five subject line options with a sentence on why each one follows from what converted, the name and size of the list it built, and a link to the draft campaign in Constant Contact. Show the most recent plan in a panel beside the board and keep the earlier ones in a history list so I can look back at what it predicted and whether it was right. Make it obvious in the panel that nothing has been sent and that the list and draft are waiting for me in Constant Contact.

Two practical notes for the build. Constant Contact allows only 4 requests per second and 10,000 per day, so the handlers must page through results properly, cache campaign summaries and click and open reports rather than refetching them on every render, and refresh on an explicit reload control instead of continuously. Shopify order pages should be cached the same way for the selected period. Second, the board should degrade gracefully: if a campaign has no click report yet, show it with its engagement numbers and an empty revenue cell marked as not yet reportable rather than showing zero revenue, because a blank and a genuine zero mean very different things to me.

What does this prompt do?

  • One row per email sent in the last 90 days, showing sends, opens, clicks, bounces and unsubscribes from Constant Contact next to the Shopify orders and revenue from the people who clicked it, so you can finally sort your sends by money
  • You set the attribution window at the top of the page, seven days by default, and every revenue figure on the screen carries that window so nobody reads the numbers the wrong way
  • Open any campaign to see who clicked and bought, who clicked and did not buy, and who opened but never clicked, plus per-link click counts that show which offer pulled
  • A Plan the next send button hands the period to a background assistant that builds a follow-up list of the clickers who did not buy, drafts the next campaign in Constant Contact, and writes its reasoning back into the board for you to read before you touch send

What do I need to use this?

  • A Constant Contact account with the campaigns you want to measure
  • A Shopify store where shoppers tend to check out with the same email address they subscribed with
  • No tracking pixel, no tagged links and nothing to install in your store

How can I customize it?

  • Change the attribution window at the top of the board, and the reporting period if ninety days is not how you think about your sends
  • Choose whether orders that Shopify reports as refunded or cancelled count toward attributed revenue
  • Tune what the planning assistant produces: how many subject line options, what it names the follow-up list, and how direct its read on the weakest sends should be

FAQs

How does this know which orders came from an email?
It matches the email addresses of the people who clicked a campaign against the email addresses on your Shopify orders, and counts the orders placed inside your attribution window after the click. This is match based rather than pixel based, so someone who clicks on their laptop and buys later on their phone still counts as long as the email address is the same, while someone who buys under a different address will not be credited.
Do I need to add tracking links or a pixel to my emails first?
No. Your existing sends work exactly as they are and nothing gets installed in your store, which is the whole point of matching on email address instead. The tradeoff is that orders placed under a different email address than the one you mailed will not be attributed, and the board says so plainly rather than hiding it.
What attribution window should I pick?
Seven days is the default and a sensible starting point for most stores. A shorter window is stricter and credits fewer orders, a longer one credits more including some the email probably did not cause. Whichever you choose is displayed next to every revenue number on the page, so the board is never ambiguous about what it is claiming.
Will refunds and cancelled orders inflate the revenue figures?
Only if you want them to. There is a switch to exclude orders that Shopify reports as refunded or cancelled, and the board always shows which setting produced the numbers you are looking at.
Does the Plan the next send button email anybody?
No. It creates the follow-up list in Constant Contact and leaves a draft campaign with subject line options, alongside a written explanation of why it picked them. You open Constant Contact and press send yourself when you are happy with it.

Related templates

Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Work your Shopify catalog until every product has a clip

See which products still have no video, animate their hero photos into short cinematic clips, and compare motion styles side by side before you pick a winner.

Higgsfield
Shopify
Google Drive
+1
App
Verify risky COD orders on WhatsApp before you pack them

A morning queue that ranks pending and unpaid orders by value, shows each buyer's return history, and queues WhatsApp confirmations before anything ships.

Heyy
Shopify
Google Sheets
App
Catalog copy desk that rewrites Shopify listings from photos

See every product with thin copy, missing alt text or no SEO title, review a rewrite built from its own photo, and publish only what you approve.

Google Gemini
Shopify
Slack Bot
App
Merchandising board for products people view but never buy

Rank your catalog by view to cart and cart to purchase rate, so the products getting real traffic and losing the sale sit at the top of the screen.

Google Analytics
Shopify
Google Sheets
App
Support console that pairs Gladly chats with orders and refunds

Type a customer email or phone and see their whole support history, order tracking, and payment record on one screen instead of three tabs.

Gladly
Shopify
Stripe
App

Stop ranking your emails by open rate.

Put real Shopify revenue next to every Constant Contact send, and get the next one drafted for you.