cypress.DOCS
Log inRegister
Cypress Docs
RemarketingReferenceChannels & promotions

Marketing campaigns

One campaign engine, one audience language — what a campaign carries, who it reaches, and what stops it going out empty.

TL;DRAI summary

This chapter explains how to create and manage marketing campaigns to sell vehicles or onboard companies. You can send personalized messages or promotions to specific audiences, track their engagement, and see how they contribute to your deals.

Dive deeper:

For: Sellers · Cypress Managers

Marketing is where campaigns live. A campaign has a goal, it carries something, it goes to an audience, and it runs on a schedule. Those four questions are the whole model, and the editor asks them in that order.

Campaigns used to be a feature of promotions — a promotion had an email leg and nothing else could send. Marketing is that engine, lifted out and given its own front door, so a written note to twelve prospects and a weekly promotion blast are the same kind of object with the same analytics behind them.

What this replaces

Most commercial teams arrive here doing outreach by hand: a spreadsheet of contacts, a list rebuilt for each send, the mail itself going out from somebody's own inbox, and the reply remembered by whoever received it. That works until it doesn't — the list is stale the day after it is exported, nobody can say what a send earned, and the history of a prospect walks out of the door with the person who owned them.

Marketing answers each of those in turn:

By handHere
A list exported from a spreadsheetAn audience described once and resolved at send time against the current book
Merge fields that break, or a generic "Hi there"Personalisation with fallbacks that never leak a raw token, previewed as the recipient will read it
Sent from a personal inboxSent from the platform, suppression and unsubscribes honoured permanently and provably
"I think it went well"Delivered → opened → clicked → viewed → saved → offered, per recipient and per vehicle
The reply lives in one person's sent folderThe interaction lands on the contact's and the company's timeline
A quarter's worth of chasing in someone's memoryDeals in the pipeline, with tasks and a temperature

Nothing here asks you to stop writing personally. A campaign of one, to one contact, in your own words, is a supported thing — the difference is that the platform remembers it.

The goal

GoalA deal sourced here is
Sell vehiclesa vehicle-sale deal
Onboard companiesan onboarding deal

The goal is not decoration. Any deal the campaign sources inherits it, so a campaign and the pipeline it feeds can never disagree about what it was doing.

What it carries

  • A promotion — the curated list and its public page. Content renders from the promotion itself.
  • A written message — your own subject and body, personalised per recipient.

What the email leads with

A campaign carrying a promotion opens with that promotion's featured vehicles — up to ten cars the promotion's owner chose, rendered as full-width hero cards in the order they set, before the compact list of everything else. The campaign screen shows them as ranked chips on the promotion card, so what the email will lead with is visible while you are wiring the campaign, not discovered in the test send.

Every vehicle card in the email also wears the same badges the marketplace shows — New, Hot, $X under, Sold — computed by the same rules, so the email and the page it links to can never disagree about a car.

Replies land with a person

Campaign mail is sent from the platform's sales address, but a reply does not go there. Every send carries a Reply-To at a human mailbox, and the email's footer says so — "Just reply — it goes straight to …" — because an invitation to reply is a lie without it.

Which mailbox is the campaign's "Replies go to" setting, in the Channel section of the editor. It arrives prefilled with your own address — you created the campaign, so by default you catch its replies — and can be pointed at any address instead: a shared offers@ inbox, a colleague, a team. The field always shows the address replies will actually reach; it is never an empty box standing in for a default.

The same address appears in the express offer form as the "prefer email?" alternative, so the modal and the mailbox cannot disagree.

The audience

One language, whatever the campaign carries:

SourceWho it reachesAvailable to
Subscribersyour storefront's double-opt-in listeveryone
CRMyour own book, filtered by lifecycle, tags, ownereveryone
Email listaddresses you pasteeveryone
Filterbusiness orgs across the platform, by segmentCypress only
Cherry-picknamed organisationsCypress only

The last two address the whole platform directory — for a seller that is their competitors, so they are absent rather than disabled. An audience you may not send to has no business appearing as a choice you can click.

A Cypress Manager acting for an organisation gets that organisation's sources, not the platform's — a campaign built in a seller's name must be one the seller could have built.

Preview the audience and its estimated reach before activating. The estimate is after suppression, so it can be lower than the number of addresses you supplied — bounced, unsubscribed and spam-marked addresses are always skipped, and the screen says how many and why. Mailing them again damages delivery for everyone else on the campaign.

Attaching the vehicle list

A campaign carrying a promotion can attach its vehicles as an Excel offer sheet — what each car is, what it costs, and a clickable link to it. The campaign screen previews the real rows before you send — and says so: the on-screen table is a preview, while the attached file always carries the complete list.

The sheet is always the offer sheet and that is not a choice: this file goes to external buyers, and floor prices have no business in it. Each recipient's vehicle link is their own, so a click from the spreadsheet is credited to the promotion exactly as a click in the email body is.

Writing the message

The message editor is a rich-text designer: headings, bold, italic, links, and bulleted or numbered lists. It is deliberately that short a list. Every control it does not offer is one that renders inconsistently in Outlook, and a control that produces something the send cannot render would be worse than no control.

Placeholders are chips, not typed tokens. A chip is a single object the caret steps over — you cannot bold half of it, which in plain text would turn {{contact.firstName}} into something that resolves to nothing and ships an email with a hole in its greeting.

Message templates

A message worth writing twice belongs in the library, at Message Templates in the sidebar.

  • Cypress publishes a base library every organisation can send as-is. Copy one to make a version you can change; the copy is a full copy, so a later Cypress edit never rewrites yours.
  • A template is a draft until you publish it. Only published messages can be sent from a campaign — a draft is by definition something nobody has said is ready.
  • Every published version is kept. The side panel lists them with who wrote each one, and restore puts an old version back on your draft. Nothing changes for campaigns until you publish, which is what makes restoring safe to try.
  • Export and import move a message between environments — author in staging, carry it to production.

In a campaign, Use a template opens a picker with a live preview beside the list, filtered by category. Inserting takes a copy: the campaign owns those words from that moment, so you can edit them freely and editing the template later never rewrites a campaign that is already scheduled.

Personalisation

Insert {{contact.firstName}}, {{contact.company}}, your own name, company, email and phone. Every placeholder has a fallback — a contact with no first name is greeted with "there", not with a raw token — and the warning bar under the editor says which of your placeholders will fall back and to what.

A written message may also carry a promotion: your own words, with {{promotion.name}} and a tracked promotion link resolving inside them. A click from that link is credited to the promotion, and bills its commission scheme rather than the marketplace's.

Two previews sit beside the message: as a full contact, and as a bare email address, which is what most of a book actually looks like. The preview resolves exactly what the send will resolve, so what you read is what arrives.

Only vehicles a buyer can buy

A campaign only ever shows vehicles that are available: listed or under offer. This applies to everything it builds from a vehicle list: the email body, the featured vehicle, the attached offer sheet, the "N more" count and audience matching. Vehicles that are sold, or have an accepted offer, are in due diligence or are ready to deliver, are left out, whether the campaign carries a hand-picked promotion, a filter-based one or an inventory digest.

Nothing is removed from the promotion itself. A vehicle whose deal falls through is available again and returns to the next send on its own.

Counts say so: the campaign editor, the promotion picker and the promotions grid read "8 available of 11", so you can see how much of the list a send will actually carry.

A campaign with nothing to sell pauses itself

Rather than send an empty email, a campaign with no available vehicles pauses itself and resumes at its next scheduled send once a vehicle is available again. The campaign page says why. The Marketing grid shows "no vehicles", separate from a manual pause, and Mission Control lists it.

A manual pause is different: it records who paused it and when, and is never undone automatically. Pausing a campaign that paused itself (Keep paused) keeps it off even when vehicles return. Activating a campaign with no available vehicles is refused, with the reason.

Nothing goes out empty

A draft may have holes — the new-campaign dialog settles the goal and what the campaign carries, and says the rest comes later. A send may not.

Before a campaign can be activated or test-sent, it must have something to render:

  • carrying a promotion → a promotion must be chosen
  • a written message → a subject and a body
  • an inventory slice → at least one vehicle, and a subject

Anything missing is listed in the editor, in the words of the control to go and use, with Activate and Send test disabled until it is answered. Your changes still save; only the doors to an inbox are closed.

Testing

Send a test to any address you choose. A test send is a tracked preview: it is recorded, and deliberately excluded from campaign analytics, so your own opens never inflate the numbers. A test is still real mail, so the suppression list applies to it as to every send: an address that unsubscribed, bounced or complained is skipped and named in the answer, and when none of your addresses can be mailed, nothing is sent.

The button reports what actually happened rather than that it was queued — delivery runs through a worker, so "sent" is not something the click can know. If nothing reaches the mailer you are told so, with the reason the mailer gave.

Reading the results

Reached means people: each distinct address the mail was actually handed to the provider for. A recipient who was listed but never written to (queued, cancelled, a send that died halfway) is not reached, and a daily campaign that mails the same person five times has reached one person through five messages. Opened, clicked and delivered count people too. Open and click rates are measured against everyone reached. Delivery confirmations arrive from the mail provider over a webhook, which can lag or be unreachable — a developer's machine cannot receive them at all — so delivery is reported as its own figure rather than used as the denominator for two other numbers.

Every send is tracked end to end — delivered, opened, clicked, then on-site viewed / saved / offered, per recipient and per vehicle. The Engagement report opens from a sortable, filterable grid: pick a campaign, a promotion or a vehicle, then open its full report.

What actually went out

The campaign's Analytics tab answers the question the percentages cannot. A campaign reading 0% opened is either a bad subject line or a send that never left the building, and only these two views tell them apart.

Sends history — one row per dispatch, saying when it was scheduled, whether it was Scheduled, Manual or a Test, and how it fared: asked, sent, failed, delivered, opened, clicked, bounced. "Asked" is how many recipients the audience resolved to; "sent" is how many dispatches actually reached the provider. Those two differing is the thing worth seeing.

Recipients — every address, with the worst thing that happened to it: failed (never reached the provider — with the reason), bounced (delivered nowhere; the address is suppressed from then on), unsubscribed, clicked, opened, delivered, sent, or pending. The list of addresses that cannot be mailed is one for the whole platform, so a reason may come from another organization's mail: a seller reads Unsubscribed only when the person unsubscribed from one of its own campaigns, and any other unsubscribe, a spam complaint or a hand suppression reads Can't be mailed, which names nobody. A bounce is a fact about the address and reads the same for everyone; Cypress staff see every reason. Filter by status, by send, or by address; a recipient who is a contact in your book links through to their record.

Opens and clicks are counted first-party, from the tracking pixel and the link redirect — not from the provider — so one open is one open.

Ownership

Every campaign belongs to a book — a seller's, or the platform's. A Cypress Manager's list spans both, with an Owner column saying which is which and the same badge on the campaign's own header. Creating one names the owner before it exists, and Cypress may choose a different one.

Business rules

  • Only email delivers today. The other channels appear as coming soon, and choosing one is refused rather than silently ignored at send time.
  • Unsubscribes are honoured permanently and provably; every send records who, when, and from which list.
  • One campaign per promotion — schedule it, don't stack it.