# ZevCampaign — full text > ZevCampaign is an email marketing platform for newsletters and broadcasts. Collect subscribers from your own site with real consent, design campaigns in a visual builder, and see exactly who opened, clicked and left. ======================================================================== PAGE: Home URL: https://zevcampaign.com/ ======================================================================== # Email marketing for people who want their list to stay. Collect subscribers from your own site with real consent, build campaigns in a visual editor, and see exactly who opened, clicked and left. Built for marketers, with an API developers do not resent. ## A list that asked to be there. Anyone can type anyone’s address into a form. ZevCampaign treats a submission as a claim until somebody proves they can read that inbox, and keeps the evidence that they did. - Confirmation email sent from your brand, not from us - The moment and the IP address are recorded as evidence - Unsubscribed contacts cannot be revived by an import ## Build the email, not the table layout. Drag blocks into place, set your brand once, and let the builder handle the rendering quirks that make email email. The preview is the same renderer that sends, so what you approve is what lands. - Blocks that behave in Outlook - Brand type, colour and footer applied everywhere - Phone preview beside the desktop one ## Numbers you can act on, described honestly. Clicks counted per link, with unique clickers separated from total clicks. Country, device and mail client where we can tell, and an honest "unknown" where we cannot. - Opens and clicks over time, not one frozen total - Per-recipient activity when you need to know about one person - An open is a pixel load, and we will not call it a read ## Arriving is the whole job. Your own verified domain, signed mail, and your bounce and complaint rates watched against the thresholds Gmail and Yahoo actually enforce. If they go wrong, sending stops before the damage compounds. - DNS re-checked continuously, not once at setup - Automatic pause, which never un-pauses on its own - Bounces and complaints suppressed without you lifting a finger ## Your systems should know when somebody leaves. A documented REST API and twelve signed webhook events. An unsubscribe changes who you may contact everywhere, not just here, and that is the case worth wiring up on day one. - Publishable keys safe in browser code, secret keys for your server - Test keys that validate everything and send nothing - HMAC signatures with a timestamp, so nothing can be replayed ## What we have not built yet Automations, SMS campaigns and WhatsApp campaigns are planned and are not here today. You will not find them described in the present tense anywhere on this site, because buying on the strength of a feature that does not exist is a bad afternoon for both of us. ======================================================================== PAGE: Email builder URL: https://zevcampaign.com/features/email-builder ======================================================================== # Build the email, not the table layout. Drag blocks onto the canvas, set the type and the colours once on your brand, and let the builder deal with the twenty-year-old rendering quirks underneath. ## Blocks, not HTML Text, image, button, columns, divider, spacer, footer. Each one knows how to render in every major client, so you are choosing what the email says rather than debugging why a button collapsed in Outlook. - Reorder by dragging; nothing reflows unexpectedly - Set padding and alignment per block - Columns stack on a phone automatically ## Your brand is set once Typeface, colours, button shape, logo and footer live on the brand. Every campaign starts from them, so the tenth email looks like the first without anybody copying hex codes around. The preview is the renderer. The same code draws the preview and the email that is sent. Not a lookalike that drifts — the identical pipeline, so what you approve is what lands. ## Check it on a phone before you send Most of your list will read this on a phone. The preview shows the phone layout beside the desktop one, so a header that is beautiful at 1200px and unreadable at 390px is obvious before it goes out. ## Raw HTML, if you really want it You can paste your own HTML instead. It is sanitised, the unsubscribe link and postal address are still enforced, and you give up the visual editor for that campaign. - **When it helps**: You have an existing template from a designer, or you generate the HTML somewhere else. - **When it does not**: You will maintain the Outlook workarounds yourself, and nobody else on the team can edit it without knowing HTML. ======================================================================== PAGE: Templates URL: https://zevcampaign.com/features/templates ======================================================================== # Start from something that already works. Pick a layout, make it yours, save it for next time. Templates are a starting point rather than a live link, which matters more than it sounds. ## Save your own Once a campaign looks right, save it as a template. The next newsletter starts where the last one finished instead of from an empty canvas. Picking a template copies it. A campaign built from a template is its own thing from that moment. Editing the template later never changes a draft somebody is working on, and never changes an email already sent. The alternative — a live link — means fixing a typo silently rewrites your archive. ======================================================================== PAGE: Personalisation URL: https://zevcampaign.com/features/personalisation ======================================================================== # Use what you know, and nothing you do not. Merge tags come from your own contact schema, so anything you can store you can put in an email. What happens when the value is missing is the interesting part. ## Two namespaces, and only two Tags are generated from your actual schema, so the picker can never offer you something that does not exist. - **contact**: Name, email, and every custom attribute you have defined. - **brand**: Who the mail is from: name, legal name, postal address, website. A missing value skips the recipient. If a campaign says {{contact.first_name}} and a contact has no first name, they are not sent it, and it does not count against your plan. "Hi ," is visibly broken, "Hi {{contact.first_name}}," is embarrassing, and "Hi there," quietly pretends you know them. Skipping is the only option that does neither. ## You see who would be skipped, before you send The preview counts the recipients missing each tag and names them. Fill the gap, or drop the tag, or send to them separately. What you do not do is find out afterwards. ======================================================================== PAGE: Brands URL: https://zevcampaign.com/features/brands ======================================================================== # One workspace, as many identities as you run. A brand is who the mail is from: the name, the logo, the sender address, the postal address and the domain underneath. Agencies need several; most people need one and never think about it again. ## Consent belongs to a brand Topics live under a brand, so somebody who subscribed to one client of yours has not subscribed to another. That is not bookkeeping, it is the difference between a mailing list and a purchased one. ## Every brand is reviewed before it sends We check that the brand and its domain line up and that nothing looks like impersonation. It usually takes under a business day, and we email either way. - **Draft**: You fill in the name, legal name and postal address. - **In review**: With us. Nothing is needed from you. - **Approved**: You can send to your whole audience. Changing who you say you are means another look. Editing a brand name, legal name, sender or postal address sends it back for review and pauses sending until that finishes. Changing a logo or a colour does not. The dashboard tells you which kind of edit you are about to make before you save it. ======================================================================== PAGE: Signup forms URL: https://zevcampaign.com/features/signup-forms ======================================================================== # Your form, your site, our plumbing. One endpoint takes a signup from a browser. Everything that makes it trustworthy — the confirmation email, the consent record, the spam defences — happens behind it. ## A key that is safe to publish Publishable keys can do exactly one thing: subscribe somebody to a topic. They cannot read your contacts, export anything or send. That is what makes them safe in page source, and you can restrict them to your own domains as well. - Restrict to the domains you actually use - Separate test keys that validate and send nothing - Secret keys stay on your server, for everything else The response never says whether somebody is already on your list. New, pending, subscribed or previously unsubscribed all answer identically. Anything more specific turns a public form into a way for anyone to check whether a particular person subscribes to you, which is their business and not ours to leak. ## Built-in defences - **Honeypot field**: A field no person sees and every bot fills. A filled one is answered exactly like a real signup and quietly dropped, so the bot learns nothing. - **Rate limits**: Per key, per minute, with a separate limit on how often one address can be mailed a confirmation. - **Confirmation by default**: Anyone can type anyone’s address into a form. It is not consent until somebody proves they can read that inbox. ======================================================================== PAGE: Topics and consent URL: https://zevcampaign.com/features/topics-and-consent ======================================================================== # An unsubscribe is almost never "never contact me again". It is "stop sending me this". Topics are how somebody can say that without leaving entirely, and they are the single thing most lists are missing. Without topics you have one switch. A reader tired of your daily digest can either keep receiving it, leave altogether, or press "report spam". Two of those cost you far more than letting them turn off one thing. ## Double opt-in, by default A form submission is a claim, not consent: anyone can type anyone’s address into a box on the open internet. We email a confirmation link from your brand, and the subscription only becomes real when somebody proves they can read that inbox. - The confirmation comes from your brand, not from us - Links expire after 14 days - Per topic, so you can turn it off where you have another lawful basis ## The evidence is kept For every confirmed subscription we store when the confirmation was sent, when it was clicked, and the IP address that clicked it. That is what answers a complaint months later, in about thirty seconds. ## A preference page, not a dead end The unsubscribe link opens a page where somebody can turn off one topic, or everything. It only ever lists topics they already have a relationship with: showing your full catalogue would advertise mail they are not getting. When somebody leaves, they stay gone. An unsubscribed contact cannot be resubscribed by an import, by the API, or by posting your form again. Only they can undo it, from a link in mail you already sent. An opt-out your next CSV can quietly reverse is not an opt-out. ======================================================================== PAGE: Contacts URL: https://zevcampaign.com/features/contacts ======================================================================== # One person, one record, however many times they sign up. Contacts are identified by email address and merged rather than duplicated. What you store about them beyond that is yours to define. ## Your own fields Define the attributes you actually use: city, plan, signup source, last order date. They are filterable, and every one of them can be used as a merge tag, because the tag list is generated from the schema rather than written by hand. ## Import without losing what you had Map your CSV columns, choose how conflicts resolve, and see what will happen before it happens. The default keeps a value you already have when the incoming one is blank, so an export with a missing column does not quietly erase half your names. - Keep existing, overwrite, or decide per field - A report of what merged, what was added and what was skipped - Unsubscribed contacts are refused rather than revived ## What changed, and when Every change to a contact is recorded with its source. When somebody asks why an address is suppressed or where a name came from, the answer is on the record instead of in somebody’s memory. ## Getting data out - **Export**: Your contacts and their attributes, as CSV, whenever you want. Including while your account is read-only. - **API**: Read and write contacts from your own systems, with cursor paging that stays correct while the list changes. - **Webhooks**: Hear about subscribes and unsubscribes as they happen, so your CRM does not drift. ======================================================================== PAGE: Lists URL: https://zevcampaign.com/features/lists ======================================================================== # Lists are for you. Topics are for them. A list is how you organise people: Lagos customers, signed up in 2026, attended the launch. It says nothing about what they agreed to receive, and that separation is deliberate. Lists narrow who you are considering. Topics decide who you may send to. Send a campaign to a list of 500 and 200 of them are not subscribed to that topic, and 300 receive it. This surprises people once, and then it is the thing that keeps them out of trouble. ## Membership is always countable The member count on a list is maintained on every path that changes it, including bulk import. A list that says 4,000 has 4,000 people on it. ======================================================================== PAGE: Sending and scheduling URL: https://zevcampaign.com/features/scheduling ======================================================================== # The send is not a point of no return. Most tools let you schedule. The part that matters is what you can do in the ninety seconds after you notice the wrong link in paragraph two. ## Pause, resume, cancel A campaign in flight can be paused and picked up again, or cancelled outright. Cancelling refunds the recipients who had not been sent to yet, so stopping a mistake does not also cost you the allowance. ## Checked before it goes Before a campaign sends we check the things that get mail filtered: a deceptive subject line, all-caps, too many links for the amount of text, bare URLs, suspicious link domains, a body too short to be worth sending. - Subject and preheader linting - Link density and suspicious domains - A count of recipients who would be skipped for missing data ## A rate you choose Set an hourly ceiling and the dispatcher respects it across every campaign. Useful when your own site has to survive whatever the email sends at it. ======================================================================== PAGE: Reporting URL: https://zevcampaign.com/features/reporting ======================================================================== # Numbers you can act on, described honestly. Delivery, opens, clicks per link, country, device and mail client, over time. Including where the data is weak, because a confident wrong number is worse than a gap. ## Which link, not just how many Every link is counted separately, with total clicks and unique clickers. The click-through rate is worked out when you look at it, so the denominator is current rather than frozen at send time. ## Over time, not just a total Opens and clicks are recorded as individual events, so you can see the shape of the first hour and the long tail afterwards rather than one number that stopped meaning anything by Tuesday. ## Where, and on what Country, device type and mail client, taken from the request. When we cannot tell, the report says unknown rather than guessing, because a plausible wrong attribution is harder to spot than a gap. An open is a pixel load, and we will not call it a read. Images are blocked, prefetched by Gmail and scanned by security gateways. Opens are useful in aggregate and meaningless for one person. Clicks are the number worth making decisions on. ## Per recipient, when you need it Every campaign has a recipient list showing what happened to each one: delivered, opened, clicked, bounced, skipped and why. Usually you want the totals; occasionally you need to know about one person, and then you really need it. ======================================================================== PAGE: Deliverability URL: https://zevcampaign.com/features/deliverability ======================================================================== # Arriving is the whole job. An email nobody receives is worse than one you never wrote, because you paid for it and believed it worked. Most of what follows is unglamorous and is the reason mail lands. ## Your domain, properly set up We give you the DNS records and check them continuously, not once. A record removed three months later is noticed, and you are told, rather than discovered when a campaign silently stops arriving. - SPF, DKIM and the alignment that makes DMARC pass - Re-checked on a schedule, not just at setup - One domain belongs to one workspace at a time Verified is not the same as ready. DNS can pass while registration with the mail carrier has quietly failed. Those are shown as different states, with a button to retry, because "verified but not sending" with no explanation is a genuinely maddening afternoon. ## Your rates, against the real thresholds Bounce and complaint rates over a rolling 30 days, measured against the limits Gmail and Yahoo actually enforce: 0.3% complaints, and bounces well under 5%. You see where you are before a mailbox provider makes the decision for you. ## If it goes wrong, sending stops Automatically, before the damage compounds. Resuming is deliberate: you clean the list and ask for a re-check, and it only clears if the numbers have actually improved. - **Healthy**: Rates comfortably inside the thresholds. - **At risk**: Climbing. You are told, and nothing is blocked yet. - **Paused**: Sending stops. It never resumes on its own. New workspaces send to themselves first. Until your brand and domain are reviewed, you can only send to addresses you have verified as your own. Getting your setup right before the first campaign is far easier than recovering from a bad start, and review usually takes under a business day. ======================================================================== PAGE: Suppressions URL: https://zevcampaign.com/features/suppressions ======================================================================== # The list of people you must not email. Mostly it maintains itself. The part worth knowing is which suppressions you can undo and which you cannot. ## Four layers - **Automatic**: A permanent bounce means the address does not exist. A complaint means somebody pressed "report spam". Both stop sending immediately, with no action from you. - **Soft bounces**: A full mailbox or a bad afternoon does not suppress on its own. Repeated ones eventually do. - **Yours**: Addresses or whole domains you never want mailed: a competitor, somebody who asked by phone, a role account. - **Known-bad addresses**: Spam traps and addresses with a history of harming deliverability are filtered before a send, so a bought or scraped list cannot quietly wreck your reputation. A complaint cannot be undone from an API. Somebody said your mail was spam. That is the clearest statement a recipient can make, and a suppression you can lift with a script is not a suppression. Hard bounces can be removed, though reviving a dead address is a fast route into a spam trap. ======================================================================== PAGE: API and webhooks URL: https://zevcampaign.com/features/api-and-webhooks ======================================================================== # Your systems should know when somebody leaves. An unsubscribe changes who you are allowed to contact everywhere, not just here. That is the case webhooks exist for, and it is worth wiring up on day one. ## Twelve events Subscribed and unsubscribed. Delivered, bounced, marked as spam, failed. Opened and clicked. Campaign started, finished, paused, cancelled. Each one signed, retried, and logged with the request and the response. - HMAC signature with a timestamp, so a captured request cannot be replayed - Retries with backoff for about half an hour - A delivery log you can read when something looks wrong ## Keys that match what they are for Publishable keys for the browser, limited to taking a signup. Secret keys for your server. Test keys that validate everything and send nothing. Each one can be scoped to a single brand. If your endpoint stops answering, we tell you. Repeated failures disable it and email whoever manages webhooks. Campaigns keep sending and every event is still recorded, so your reports stay complete while you fix it. ======================================================================== PAGE: Teams and access URL: https://zevcampaign.com/features/teams ======================================================================== # A junior marketer should be able to ship a campaign. And should not be able to change the brand identity, rotate an API key or buy a bigger plan. Roles here are drawn around that. ## Three roles - **Member**: Contacts, lists, topics, campaigns, templates. Everything needed to build and send, and nothing that changes who you are. - **Admin**: All of that, plus brands, sending domains, API keys and webhooks. - **Owner**: All of that, plus billing. Only the owner commits the workspace to spending money. ## Scoped to a brand A member can be limited to specific brands. They see those campaigns, contacts and lists and nothing else. A scoped admin cannot widen somebody else beyond their own access, which is the loophole that version usually has. Handing over ownership is two steps, not a password. The current owner proposes it and the new owner accepts. The swap happens in one transaction and is recorded. Nobody ends up sharing a login because one person left. ======================================================================== PAGE: Pricing URL: https://zevcampaign.com/pricing ======================================================================== ## Starter A newsletter, sent properly, without a committee. ₦12,000 per month, or ₦120,000 per year. $25 per month, or $250 per year. - Visual email builder and template library - Signup forms with double opt-in - Full reporting: opens, clicks per link, geography - REST API and webhooks - 3 sending domains, 5 team members ## Pro Several brands, a real audience, and people who need their own access. ₦50,000 per month, or ₦500,000 per year. $99 per month, or $990 per year. - Everything in Starter - Remove the ZevCampaign footer badge - Per-brand access for team members - 10 sending domains, 20 team members - 25 GB of image storage ## Business Agency volume, with the headroom not to think about limits. ₦200,000 per month, or ₦2,000,000 per year. $399 per month, or $3990 per year. - Everything in Pro - 50 sending domains, 100 team members - 250 GB of image storage - Priority support