Register your interest: Tag @Cody, get an agent
BlogResources

Workflow automation for marketing teams: the frequency problem

Each campaign is sensible on its own and together they are too much. Global caps, consent that holds, and brand safety when nobody reviews the output.

Aymeric ZhuoAymeric Zhuo11 min read

Summarize with AI

Workflow automation for marketing teams: the frequency problem
On this page

Marketing automation fails in a specific way: every individual campaign is reasonable, nobody is doing anything wrong, and a customer receives eleven messages in a fortnight because four teams each thought their three were fine.

Nothing in a campaign tool prevents that, because each campaign is configured in isolation. The layer worth building sits above them — a global view of who has been contacted, what they consented to, and what should never go out unreviewed.

What we'll cover

Nobody owns the total

Campaigns are configured independently, by different people, frequently in different tools.

Lifecycle, product and sales messaging all reach the same person and none of them counts the others.

The customer experiences the sum, which is the only number that matters and the one nothing reports.

Unsubscribes rise before anybody notices, since each campaign's own rate looks acceptable.

The cost lands on deliverability, which affects every message the company sends including the ones people wanted.

Somebody has to own the total. That is an organisational decision that automation enforces rather than replaces.

A global frequency cap

One limit per person across every automated channel, checked before sending rather than reported afterwards.

Priority decides what wins when the cap binds, which requires ranking campaigns against each other — an uncomfortable conversation that only happens when a cap forces it.

Transactional messages sit outside it, genuinely transactional ones, which is a distinction to police rather than declare.

Count across channels. Email, push and text arriving on the same day are one experience to the recipient.

Make the suppressed sends visible, since a campaign quietly reaching half its list is worse than one that is told it reached half.

Set it conservatively and raise it with evidence, rather than the reverse.

Record what was agreed, when, and on what wording, rather than a boolean.

Separate purposes. Consent to receive a requested document is not consent to a newsletter, and treating them as one is the most common error in this function.

Honour withdrawal everywhere, promptly, including in audiences you exported to ad platforms.

Preference centres beat unsubscribe where the alternative is losing somebody entirely, and they must actually work.

Keep the evidence, since proving consent means showing what was on the screen at the time.

Re-permission the ageing list rather than continuing to mail addresses that have not engaged in years, which costs deliverability for no return.

Building it with CodeWords

CodeWords connects to more than 3,000 integrations, and the connection is made once and reused.

  1. Open CodeWords and start a new automation.
  2. Describe what should happen in plain language to Cody, the automation builder: the cap, the priority order, the consent check, and what is reported.
  3. Authorize the connections — the email platform, the CRM, the ad platforms and your chat.
  4. Describe the exceptions: a transactional message, a customer already contacted this week, an unsubscribed contact, a campaign above its priority.
  5. Run it in report-only mode for a fortnight and look at how many sends the cap would have suppressed.

You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.

Suppression as shared state

One list, consulted by everything, is the only arrangement that works.

Unsubscribes, complaints, hard bounces and do-not-contact requests all belong in it.

Existing customers and open opportunities belong in campaign-specific suppression, which sales will otherwise raise as a complaint and be right to.

Recently contacted is a suppression rule as much as a cap, and it is the one most often missing.

Reconcile across systems on a schedule and alert on divergence, since the failure is silent.

Record the reason, because a bounce and a request to stop are different and a person who asked deserves a different record.

Brand safety without a reviewer

Automation publishes without a person reading it, which is the trade and it needs guard rails.

Hold everything during an incident, which requires knowing an incident is happening — an integration worth building on its own.

Pause on external events where your automation would read badly, which is a judgement somebody must be able to make quickly with a single switch.

Never automate a response to news, which is where automated posting produces its most memorable failures.

Check generated copy against a list of claims you cannot make, particularly regulated ones.

Have an off switch that one person can use without a deployment, and make sure everybody knows where it is.

The operational work worth automating

Campaign setup and assembly, which is repetitive and error-prone by hand.

Link tagging, applied consistently, since retrofitting attribution is impossible.

Asset checks before launch — broken links, missing images, wrong dates, placeholder text.

Reporting distribution, on a schedule, in a consistent shape.

List hygiene: verification, deduplication, and removal of persistent non-engagers.

The approval trail, so who signed off what is recorded rather than remembered.

Measuring without flattering yourself

Platform-reported conversions overstate, on every platform, for the same reasons everywhere.

Hold out a control group wherever volume allows, since it is the only way to know whether a programme caused anything.

Report unsubscribes and complaints beside performance, since a campaign that converted well and cost you list is not a success.

Attribute to revenue, not to opens or clicks, which are the metrics most available and least meaningful.

Compare against your own baseline rather than published benchmarks, which measure somebody else's funnel.

Report the cap's effect — sends suppressed, by campaign — which is how the priority conversation stays honest.

Personalisation, and where it stops helping

Automation makes personalisation cheap, which is why most of it is now done badly. The distinction that matters is between knowing something useful and demonstrating that you have been watching.

Relevance beats the name. A message about the thing somebody actually looked at outperforms any amount of merge-field decoration.

Missing data has to degrade gracefully. A greeting with an empty bracket or a literal placeholder is the most visible possible failure and it happens on every list.

Do not reference behaviour they did not share deliberately. Mentioning pages somebody browsed reads as surveillance even when it is technically available.

Stale personalisation is worse than none — a message about a plan they left, a product they returned, a role they no longer hold.

Segment rather than individualise for most purposes, since a well-chosen segment gets most of the benefit without any of the failure modes.

Test whether it works. Personalisation is assumed to help and frequently does not, and a holdout answers it in a fortnight.

Making it survive

Check the cap immediately before sending, not at scheduling time.

Make sends idempotent, since a duplicate campaign send is highly visible.

Fail closed on a consent check. If consent cannot be verified, do not send.

Handle platform outages by holding rather than skipping, and report the delay.

Report the outcome: sends attempted, suppressed by reason, consent failures, and list health.

Limits worth knowing about

Campaign tools resist external control, and not all of them expose a pre-send hook.

Consent rules differ by market, including whether business addresses are treated differently.

Attribution is loose everywhere, and no amount of tagging closes the gap entirely.

Deliverability is not yours to control, only to influence, and the influence is mostly through restraint.

Automation cannot fix positioning. If the message is wrong, sending it more consistently makes things worse rather than better.

What to build first

The cross-campaign contact report: every automated message a person received in the last fortnight, from every system, in one view. It sends nothing and changes nothing, and in most organisations the first run is genuinely alarming — which is what makes the frequency cap an easy conversation rather than a contested one.

Two habits make the difference. Count contacts across every channel and every team rather than per campaign, since the recipient experiences the sum and nothing else reports it. And keep an off switch one person can operate without a deployment, because the automated message that goes out during somebody else's crisis is the failure this function is remembered for.

Frequently asked questions

Why do customers receive too much marketing?

Because campaigns are configured independently, often in different tools, and nothing counts the total. Each team's three messages are reasonable; the eleven the customer receives are not, and no campaign report shows that number.

What is a global frequency cap?

One limit per person across every automated channel, checked before sending rather than reported afterwards, with a priority order deciding what wins when it binds. That ranking conversation only happens when a cap forces it.

What was agreed, when, and on which wording — with purposes separated, since consent to receive a requested document is not consent to a newsletter. Keep the evidence, because proving consent means showing what was on the screen.

What belongs in a shared suppression list?

Unsubscribes, complaints, hard bounces and do-not-contact requests, with the reason recorded. Recently contacted belongs there too, and it is the rule most often missing.

How do I keep automated publishing brand-safe?

Hold everything during an incident, pause on external events where the message would read badly, never automate a response to news, and keep an off switch one person can operate without a deployment.

How should marketing automation be measured?

Against a holdout where volume allows, attributed to revenue rather than opens, with unsubscribes and complaints reported beside performance — since a campaign that converted well and cost you list is not a success.

Should transactional messages count against the cap?

No, but the definition needs policing. A promotional message dressed as transactional is the standard way a cap gets circumvented, and it is usually done without anyone intending to.

Do not send. Failing closed is the correct default here, since the cost of a suppressed send is small and the cost of an unconsented one is not.

Does personalisation actually help?

Relevance does; decoration does not. A message about something the person actually cares about outperforms merge-field personalisation, and the assumption that inserting a name helps is worth testing against a holdout rather than believing.

What is the most visible personalisation failure?

An empty placeholder in a greeting. It happens on every list because some records lack the field, and it is why missing data must degrade gracefully rather than rendering literally.

Should marketing automation own the whole customer journey?

It should own the total contact, which is different. The journey involves product, support and sales messaging that marketing does not control, and a cap is the only mechanism that accounts for all of it.

Why re-permission an old list?

Because mailing addresses that have not engaged in years costs deliverability for no return, and a smaller engaged list outperforms a larger stale one on every metric including total revenue.

Get started today

Your first workflow is free to build.

Describe what you need. Cody handles the build, the connections, and the deployment.