--- title: "Campaign Content" slug: "campaign-content" updated: 2026-11-03T11:15:45Z published: 2026-11-03T11:15:45Z canonical: "docs.xtremepush.com/campaign-content" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt > Use this file to discover all available pages before exploring further. # Campaign Content Campaign Content is the library in XpertOS where you write, review and approve the copy for your campaigns: email, push, web push, SMS and in-app messages. Each piece of copy is versioned, so the version that was approved is the version that goes live. > [!NOTE] > Campaign Content is in beta and must be enabled for your account. Speak to your account manager for a demo. A typical piece of copy goes through the stages on this page in order: you create it, write and check it, get it approved, and then use it in a campaign. Later you can change it, or reuse it for other channels and languages. ## Create content Each content item holds the copy for one channel. You choose the channel when you create the item. You cannot change it later. 1. Go to **Content** > **Campaign Content**. 2. Click **New content**. 3. Choose the channel the copy is for: **Email**, **Push**, **Web push**, **SMS** or **In-app**. The item opens as a draft (v1). Click **Details** to give it a name, description, tags, brands and an optional valid-until date. You can also ask an Xpert to draft copy for you, or bring in copy you have already sent from Xtremepush. ### Import copy from Xtremepush Importing gives you a starting library of copy that has already been sent. You need a connected Xtremepush instance and permission to approve content. 1. Click **Import from Xtremepush**. 2. Choose an instance, then find and select the campaigns you want. You can import up to 50 campaigns at a time. 3. Click **Import campaigns**. Each message in a campaign becomes its own item. Copy from a sent campaign or a live journey step arrives approved; copy from a draft journey step arrives in review. Each message can only be imported once: importing it again reports that it has already been imported and does not update the existing item. ## Write and check your copy Edits to a draft save automatically. For push, web push, SMS and in-app copy, you edit the fields directly on the item page, with a preview beside them. SMS copy shows a live count of characters and message parts. ### Edit an email An email item opens on the rendered email, as a recipient would see it. The inbox line at the top shows the sender, subject and preheader. Use the tabs to switch between **Preview**, **HTML** and **Plain text**, and choose **Desktop** or **Mobile**, and **Light**, **Dark** or **Inverted**. **Inverted** is an approximation of how some email apps force a dark theme. Edit the subject, preheader and sender in the fields above the preview. To edit the HTML, click **Open editor**. The email editor opens full screen. Drag the divider between the code and the preview to resize them. On a narrow screen, switch between **Code** and **Preview**. The preview updates as you type. Click an element in the preview to select its code, or Alt-click (Option-click on a Mac) to select the whole element. When **Follow cursor in preview** is on, moving the cursor in the code outlines the matching element in the preview. To change wording quickly, double-click text in the preview and type. Press Enter or click away to keep the change, or press Escape to cancel. Text that contains merge fields, and elements such as tables and images, can only be edited in the code. In the code, type `{{` to choose a merge field or an Xtremepush system tag. Emmet abbreviations, such as `table>tr>td*3`, expand when you press Tab. Click **Format**, or press Shift+Alt+F, to tidy the HTML; Outlook-only blocks are kept exactly as written. To add an image from Media, click **Insert image**. When the cursor is in an image tag, or you have clicked an image in the preview, the button reads **Replace image**, and only the image source changes unless you also choose to update the size or alt text. The editor marks problems in the code as you type, such as an unclosed table cell or an image without alt text. The problems button above the code shows how many there are; click it to list them. These notes are advisory and never stop you saving. ### Check your copy Run the content checks before you submit copy for review, so that you find problems early. On the item page, click **Run checks** in the **Checks** panel. In the email editor, click **Checks** in the header, then **Run checks**; click **Show in code** under a finding to jump to it. Running the checks in the editor saves your changes first. | Check | What it looks for | Blocks approval | | --- | --- | --- | | **Channel limits** | Copy that is likely to be cut off, and the number of SMS parts | No | | **Merge fields** | Malformed or unknown merge fields | Yes, if a field is malformed | | **Media exists** | Images that are missing or cannot be loaded | No | | **Images fit their channel** | Images that are too large for their channel (2 MB for push and in-app), the wrong shape, or in a format the channel does not accept. Email images over 1 MB give a warning. | Yes, if an image is over the size limit | | **Links resolve** | Broken links | No | | **Compliance** | Your organisation's compliance rules (see [Set up compliance rules](/docs/campaign-content#set-up-compliance-rules)) | Yes | | **Brand voice (advisory)** | How well the copy matches your brand guidelines, scored 1 to 5, with the guideline passage it used | No | ## Get your copy approved Copy must be approved before it can be used in a campaign that is signed off. Every version of an item is in one of these states: | State | What it means | | --- | --- | | **Draft** | Being written. It can be edited. | | **In review** | Submitted for approval. It cannot be edited until it is approved or sent back. | | **Approved** | Ready to use. It can never be edited. | | **Superseded** | A later version has been approved. It stays in the history for reference and audit. | To submit your copy, click **Submit for review** in the **Versions** panel. The copy is frozen while it is in review. To review copy, open the item and read the version in review. Add a note in **Review note (optional)** if you want to, then click **Approve**, or click **Reject** to send it back to draft. A rejection needs a note, which the writer sees on the version. If a compliance rule, a malformed merge field or an oversized image fails, approval is blocked and a dialog lists the failures. Fix the copy and approve again, or click **Approve anyway** and give a reason. The reason is kept on the version and in the audit log. > [!NOTE] > **Who can approve** > > Approving content needs the approve permission, which tenant admins and platform admins have by default. Xperts can write and submit content but can never approve it. > > To require a second approver, turn on **Require a second approver for content** in **Control Tower** > **Policies**. When this setting is on, the author of a version and anyone who edited it cannot approve it. ## Use your copy in a campaign To use copy in a campaign, pin a version of it to the channel on a **Work Trafficking** campaign ticket. **Assembly** deploys the pinned version, so the reviewed and approved copy is what goes live. A campaign ticket cannot be signed off until the copy pinned for each channel is approved. The ticket keeps the version it has pinned. When a newer version is approved in the library, the ticket shows that a newer one is available; click **update** to switch to it. An email on a ticket shows the rendered email, with the same **Preview**, **HTML** and **Plain text** tabs as the library. Click **Hide email** to collapse it, or **Open editor** to edit the HTML. From a ticket, the editor saves only when you click **Save** or press Cmd+S (Ctrl+S on Windows). If the ticket is signed off, saving withdraws the sign-off, so the editor asks you to confirm first. ## Change approved copy Approved copy cannot be edited, so a change always starts a new version. 1. Open the item and click **Edit as new draft**. This creates the next version as a draft. Tickets keep using the approved version until the new one is approved. 2. Make your changes, then submit the new version for review. An item has at most one draft or in-review version at a time. If someone changes the same draft elsewhere while you are editing it, for example from a ticket or through an Xpert, your changes stop saving so that the newer copy is not overwritten, and the editor shows **Not saved: changed elsewhere**. Click **Load the latest** to load the newer copy. Your own version is copied to the clipboard first, so you can paste back anything you need. ### Compare versions To see what changed, click **Compare versions** in the **Versions** panel, or, when you review a version, click **What changed since the last approved version**. Choose the two versions, then use the **Fields** tab for each changed field, the **Code** tab for a line-by-line comparison of long fields such as the email HTML, or the **Rendered** tab to see two versions of an email side by side. To share a comparison, click **Copy a link to this comparison**. Anyone you share it with needs access to this workspace. ## Reuse and find copy ### Create copy for other channels To turn an item into matching drafts for other channels, for example an email into push and SMS, open the item, click the **…** menu and choose **Create channel set**. The new drafts are adapted to each channel and based on the approved version, or on the latest version if none is approved. ### Add A/B variants and languages An item can hold up to four A/B variants, or up to 20 languages besides the default. A campaign can use one or the other, not both. Use the copy selector above the content (the drop-down which usually starts as **One version**), for example **Variant A · English**, to switch between them. To add a variant, click **Add A/B variant** in the copy selector and give each variant a share of the audience. The shares must total 100%; **Even split** shares them equally. **Assembly** deploys the variants as a single A/B campaign in Xtremepush. To add a language, choose it under **Translate into…** and click **Translate** to translate the copy automatically, or click **Add language** to write the translation yourself. > [!WARNING] > Variant or translation > > An item that has both variants and languages shows a warning, and it cannot be assembled or deployed. ### Find copy Search finds copy by meaning, not exact words, and lists the closest matches first. Use **Filter** to narrow the list by channel, status, brand or source. To find proven copy, open **Top performing**, which lists approved copy sent to at least 1,000 recipients, best first, and sort it by open rate or click-through rate. ## Keep the library tidy ### Archive and restore To take an item out of use, click the **…** menu and choose **Archive**. An archived item cannot be edited or added to a ticket. Archiving applies to the whole item, not to one version. To bring it back, open it and click **Restore**. ### Set up compliance rules Compliance rules decide what copy may be approved, for example, that UK copy must include "18+". A failing rule blocks approval unless an approver overrides it with a reason. 1. On the Campaign Content home page, click **Settings**. 2. Click **New rule**. 3. Choose the type of rule, the text or pattern to check, the brands and channels it applies to, and the message writers see when it fails. 4. Save the rule. To try your rules before you rely on them, paste copy into **Test against text**, choose a channel and brand, and click **Test**. Nothing is saved. ### The weekly hygiene sweep Every week, Campaign Content checks approved copy that is in use for broken links, missing images, valid-until dates that have passed, and near-duplicates. Items with a problem show a **Needs attention** badge, and you can list them with the **Needs attention** option under **Filter** > **Show**. If you use Work Trafficking, the sweep also raises one investigation ticket listing what it found. To run the sweep straight away, go to **Settings** and click **Run sweep now**. ## Xperts and Campaign Content Xperts can search, write, revise and translate copy, create channel sets, and submit copy for review, but they can never approve it. Xperts can also generate A/B variants of a draft; there is no button for this in the library, so ask an Xpert.