Content

Guidelines for writing copy across Customer.io interfaces.


1. Voice and tone

Voice

Copy is direct, calm, helpful, and human. It is not chatty, apologetic, self-promotional, or passive.

table
CharacteristicDoDon't
Direct"Save changes""Go ahead and click Save to save your work"
Calm"Connection lost. Check your network connection.""Oops! Something went wrong."
Helpful"No segments found. Adjust your search filters.""No segments found."
Human"This message will send to 4,200 people.""This message will be delivered to 4,200 recipients."
Neutral"The Agent is ready.""You've unlocked a powerful new feature!"

Pronouns

Use "you" and "your" to address the person directly. Don't mix "my" and "your" on the same screen. Pick one and use it consistently throughout a flow. Remove possessives when they add no meaning.

Do
  • Favorites
  • Your campaigns
Don't
  • My Favorites (when the rest of the screen uses "your")
  • Your Favorites (when "Favorites" is sufficient)

Don't start a sentence with "this" or "that" unless the noun immediately follows. It's ambiguous in context and harder to parse.

Do
  • "This segment will be deleted after 30 days."
Don't
  • "This will be deleted after 30 days."

Tone

Tone adjusts to what the person is experiencing. A person completing their first setup flow needs reassurance. A person facing a destructive action needs precision.

table
ContextToneExample
Task flowFunctional, invisible"Save changes"
Onboarding / first useWarm, clear"You're all set. Your first message is ready to send."
Empty stateHelpful, inviting"No segments yet. Create one to start targeting your audience."
SuccessBrief, positive"Campaign sent."
WarningClear, non-alarmist"Deleting this attribute will remove it from 4,200 people."
ErrorDirect, actionable"Your changes couldn't be saved. Check your connection and try again."
Destructive / irreversibleSerious, precise"Deleting this campaign is permanent and cannot be undone."
AI outputOutcome-first, hedged"Based on recent behavior, these people are more likely to re-engage."

2. Capitalization

Use sentence case everywhere (capitalize the first word and proper nouns only). That includes: headings, labels, buttons, tooltips, placeholder text, empty states, error messages, nav items, column headers.

When in doubt, use sentence case. Title case in labels creates inconsistency and adds visual noise: it's harder to scan, harder to localize, and creates a second capitalization system that readers have to learn.

Do
  • Create a segment
  • Send your first campaign
  • No results found
Don't
  • Create A Segment
  • Send Your First Campaign
  • No Results Found

Proper nouns

Always capitalize the following nouns:

  • Customer.io

3. Punctuation

Periods

Use periods for full sentences. Do not use periods for standalone labels, button text, nav items, or column headers. Periods for labels signal that something requires comprehension rather than a quick scan.

Do
  • Button: Save changes
  • Helper text: Changes are saved automatically every 30 seconds.
  • Error: Your changes couldn't be saved. Check your connection and try again.
  • Nav item: Campaigns
  • Column: Last sent
Don't
  • Button: Save changes.
  • Helper text: Changes are saved automatically every 30 seconds
  • Nav item: Campaigns.

Exclamation points

Reserve exclamation points for genuine first-time milestones only to preserve impact. Exclamation points lose meaning through overuse. Never use exclamation points in errors, warnings, or routine confirmations.

Do
  • "Your campaign is live!" (first campaign milestone)
Don't
  • "Changes saved!"
  • "Enter a valid email address!"

Ellipses

Use ellipses only in progress and loading states.

Do
  • Sending…
  • Loading…
Don't
  • Not sure what to do next…

There is one exception for buttons where it is appropriate to use when a button opens a dialog or requires additional input before the action completes. It signals "there's more to do before this happens" and removes hesitation from people who aren't sure what will be affected.

Em dashes and en dashes

Do not use em dashes (—). Em dashes have become strongly associated with AI-generated text and add visual noise in dense interfaces. Restructure the sentence or use a comma instead.

Use an en dash (–) for ranges.

Do
  • "The segment updates every hour, so results may vary." (comma instead of em dash)
  • 9:00 am – 5:00 pm
  • 10–20 people
  • Steps 1–4
Don't
  • "The segment updates every hour—so results may vary."
  • 9 am - 5 pm
  • 9 am to 5 pm (in compact data displays)

Colons

Use colons to introduce a list or label-value pair. Do not add a space before the colon. Omit the colon when the label and value are visually separated by layout.

Do
  • Sent to: 4,200 people
  • Channels: Email, SMS, and push
  • You can send across three channels: email, SMS, and push.
Don't
  • Sent to : 4,200 people

Ampersands

Use ampersands (&) only in established product names ("Data & Integrations") or space-constrained UI (nav items, table headers). Write and everywhere else.

Parentheses

Use parentheses to define an acronym or term on first use. Do not use to add asides or extra thoughts. Restructure the sentence instead.

Do
  • "Customer Data Platform (CDP)"
  • "Liquid (a templating language) lets you personalize messages."
Don't
  • "Your segment is ready (it may take a moment to populate)."

Oxford comma

Always use an oxford comma in lists of three or more.

Do
  • email, SMS, and push
Don't
  • email, SMS and push

4. Numbers, time, and dates

Numbers

  • Use Arabic numerals always, including at the start of a sentence: 4,200 people not Four thousand two hundred people
  • Format with commas: 1,200 not 1200
  • Abbreviate when space is constrained, consistently within a view: 1.2K, 4.8M

Time

  • 12-hour format, lowercase am/pm: 10:30 am, 4:00 pm
  • Include time zone whenever relevant: 10:30 am ET
  • Use an en dash for time ranges: 9:00 am – 5:00 pm

Dates

  • Default: July 28, 2025
  • Dense data tables only: MM/DD/YYYY

Relative time

Use relative time for timestamps and activity feeds. Use the appropriate unit once it reaches its threshold. Use 1 hour ago instead of 60 minutes ago.

Elapsed time:

  • Just now
  • 1 minute ago
  • X minutes ago
  • 1 hour ago
  • X hours ago
  • 1 day ago
  • X days ago
  • 1 month ago
  • X months ago
  • 1 year ago

Remaining time:

  • X hours remaining
  • X minutes remaining
  • X seconds remaining
  • About X minutes remaining (use "about" for estimates)

5. Buttons and action labels

Rules

  • Start with a verb.
  • Keep it short and succinct: 1–3 words.
  • Be specific enough that the button is self-explanatory without surrounding context.
  • Cancel is always "Cancel", never "No", "Never mind", "Go back", or "Close".
  • Use an ellipsis (…) when a button opens a dialog or requires additional input before the action completes. It signals "there's more to do before this happens" and removes hesitation from people who aren't sure what will be affected.
Do
  • Export… (opens a dialog asking what to export and in what format)
Don't
  • Create campaign… (navigates to a new page immediately)

Generic verbs like "Submit", "Confirm", and "OK" require people to hold surrounding context to understand what will happen. Specific verbs like "Delete campaign" and "Send newsletter" let people act with confidence. This matters most for destructive actions, where a vague label can have significant consequences.

Types

table
TypePatternExamples
Primary actionVerb + objectCreate campaign, Add people, Send broadcast
DestructiveDelete + objectDelete segment
ConfirmationVerb restating the actionDelete campaign, Send now
CancelCancelAlways Cancel
SaveSave / Save changes / Save and closeMatch to interaction model
ProgressiveForward-motion verbNext, Continue, Set up object
Dialog-triggeringVerbExport…
Loading statePresent participle…Saving…, Sending…
Do
  • Send campaign
  • Delete segment
  • Permanently delete campaign
  • Cancel
Don't
  • OK
  • Confirm
  • Submit
  • Yes
  • Sure

6. Onboarding

  • Lead with the task, not background information.
  • One instruction per step.
  • Always show progress (step X of Y or equivalent).
  • Confirm completion explicitly. Say what was set up and what the person can do now.
Do
  • "Your first event was tracked. Customer.io is now receiving data."
  • "You're all set. Your campaign is ready to send."
Don't
  • "Setup complete!"
  • "You did it!"

7. Errors and system feedback

Error states are high-anxiety moments. Vague errors ("Something went wrong") make people feel helpless. Blame-framed errors ("You entered an invalid value") create frustration. A good error message turns a moment of friction into a moment of guidance. It is often the difference between a person recovering independently and submitting a support ticket.

Answer as many of these as possible:

  1. What happened? State the problem plainly.
  2. Why? Give context when it's honest and useful.
  3. What now? Give a specific next step.

Validation errors (inline, adjacent to field)

Frame validation errors as instructions, not accusations.

Do
  • Enter a valid email address.
  • Segment name is required.
  • Password must be at least 8 characters.
Don't
  • Invalid input.
  • Please check this field.
  • Error.

System errors (something failed)

Do
  • Your changes couldn't be saved. Check your connection and try again.
Don't
  • An error occurred. Please try again later.
  • Oops! Something went wrong.

Permission errors

Do
  • You don't have permission to delete campaigns. Contact your admin to update permissions.
  • [Feature] isn't available on your plan. Contact your admin to access this feature.
Don't
  • Access denied.
  • You can't do that.

Payment and account errors

Use passive voice in payment, security, and account errors where active voice would imply blame or cause alarm.

Do
  • Your payment was declined.
  • Your account has been disabled.
Don't
  • We declined your payment.
  • We disabled your account.

Destructive warnings (before action)

State the consequence. If the action is reversible within a time window, say so. It's more informative and less alarming than stating only that something will be deleted.

Do
  • Deleting this segment will remove it from 3 active campaigns. This cannot be undone.
  • Unsubscribing these 1,400 people will opt them out of all messages.
Don't
  • Warning: This action may have consequences.

Success messages

Confirm what happened. Keep it brief. No editorializing. Reserve positive, warm tone and exclamation points for genuine milestones only.

Do
  • [campaign name] saved.
  • 2,400 people added to [segment name].
Don't
  • Awesome! Your campaign has been saved successfully.
  • Great work! You've added people to your segment.

Rules

  • Never use "Oops".
  • Never blame the person: "You entered an invalid email""Enter a valid email address."
  • Never be vague: "Something went wrong" is never acceptable.
  • Never use exclamation points in errors.
  • Always offer a recovery path when one exists.

8. Inclusive language

Language can exclude people in ways that are both immediately obvious to the affected person and invisible to everyone else. For example, "easy" and "simple" invalidate the experience of people who find things hard.

Substitution

table
Don't useUse instead
WhitelistAllowlist
BlacklistBlocklist
Master / slavePrimary / replica, leader / follower
Sanity checkCheck, verify, review
Dummy dataSample data, placeholder data
Kill / abortStop, cancel, end
ClickSelect
See (as in "see all results")View
Watch (video)Play
Hit (a button)Select
Easy / simpleRemove or rephrase
End-userPerson
Solution (as a noun)Reframe as active verb phrase
Recalled / revoked / rescindedNot available, not supported
He / sheThey
He or sheThey

Person-first

Use the most specific term available over generic abstractions.

Do
  • Add people to this segment.
  • Ask your admin.
Don't
  • Add users to this segment.
  • End-users will receive this message.

No assumed context

  • Always specify time zones when displaying times.
  • Avoid idioms that don't translate: "low-hanging fruit", "hit the ground running", "ballpark".
  • Use internationally unambiguous date formats when precision matters.
  • Don't start a sentence with "this" or "that" unless the noun immediately follows. It's ambiguous and difficult to translate.

No urgency or pressure language

Do
  • You've used 9 of 10 segments on your current plan.
  • This feature is available on the Growth plan.
Don't
  • You're almost out of segments — upgrade now!
  • Don't miss out — your trial ends in 3 days!

9. Accessibility and alt text

Alt text makes images accessible to people who use screen readers and provides context when images don't load. Every informative image needs alt text. Decorative images should use alt="" to hide them from screen readers.

Rules

  • Write alt text for all informative images.
  • Use alt="" for decorative images.
  • Do not start alt text with "Image of". Screen readers already announce it's an image.
  • Keep alt text under 140 characters.
  • Describe meaning and context, not visual detail.
  • Do not repeat the caption in alt text.
  • Use the same word choices in alt text as in nearby body text and captions.
Do
  • A campaign builder showing three connected steps: trigger, filter, and email.
Don't
  • img_campaign_flow_v2.png
Do
  • A bar chart showing email open rates by day, peaking on Tuesday.
Don't
  • A colorful bar chart with blue and red bars on a white background.
Do
  • A tooltip reads "Number of people who received this message" when hovering over the Delivered metric.
Don't
  • A mouse cursor hovers over a small circular icon next to the word Delivered and a tooltip box appears below it with text inside.

Alt text in Customer.io contexts

  • Empty state illustrations: If the heading and body copy already convey the message, the illustration is decorative. Use alt="".
  • Charts and data visualizations: Describe the key insight, not the structure. "Open rates peaked at 42% in March, driven by the re-engagement campaign." For complex charts, note the general pattern and link to the underlying data.

10. AI-specific copy

AI features carry a specific set of trust risks that standard copy rules don't cover. Overclaiming ("optimal", "best") sets expectations the system can't always meet. Describing the technology instead of the outcome makes copy feel like a press release. Presenting AI output as final removes agency. Calling the Agent "a bot" or "a tool" undersells a capability that is core to the platform's value.

Rules

  • Lead with the outcome, not the AI. Never use "AI-powered" as a descriptor.
  • AI output is always a suggestion until a person acts on it. Never present it as final or authoritative.
  • Use hedging language for probabilistic recommendations: "likely", "based on", "suggested".
  • Describe what the AI is doing in plain terms, not the technology behind it.
  • The AI Agent is "the Agent". Never "the bot", "the AI", or "the tool".
  • When the Agent completes a task, confirm what it did and what the person should review.

Outcome-first, not AI-first

Do
  • Your segment is ready. The Agent identified 1,240 high-intent profiles.
  • Suggested subject lines based on your previous broadcasts.
Don't
  • AI-powered segmentation is analyzing your data.
  • Our AI has generated these suggestions.

Confidence and uncertainty

Do
  • Based on recent behavior, these people are likely to re-engage.
  • Suggested send time based on open rate patterns.
Don't
  • The optimal send time is 9:00 am Tuesday.
  • These are your best contacts for this campaign.

AI in progress

Do
  • Generating subject lines…
  • Analyzing campaign history…
  • Building your audience…
Don't
  • AI is thinking…
  • Running AI model…
  • Machine learning in progress…