Summarize this documentation using AI
Overview
Getting a phone number in Customer.io is the foundation for SMS programs that actually move revenue, like abandoned checkout recovery, back-in-stock alerts, and post-purchase delivery updates that reduce support tickets and drive the second order. For most D2C brands, the win is simple, better reach at high-intent moments where email is too slow or gets ignored.
If you want this wired into your Shopify checkout, forms, and event tracking without creating data debt, Propel can help you implement it cleanly inside Customer.io, then pressure test it against real conversion goals. If you want help mapping the data and flows, book a strategy call.
How It Works
Getting a phone number in Customer.io works by storing a customer’s phone as a person attribute (and optionally collecting it through events) so you can segment, personalize, and send SMS to the right shoppers at the right time.
In practice, you will do three things: collect a number from a trustworthy source (checkout, account creation, sign-up form, or SMS opt-in tool), normalize it into a consistent format (typically E.164, like +14155552671), and keep it updated on the person profile so automation always targets the latest number.
Once the phone attribute is present, you can use it in segments (for example, “has phone AND SMS consent true”), in message personalization (for example, conditional content based on country code), and in orchestration logic (for example, send SMS only if phone exists, otherwise fall back to email). This becomes especially important when you scale multi-step journeys in Customer.io and need predictable eligibility rules.
Step-by-Step Setup
Getting a phone number in Customer.io is easiest when you treat it like a core identity field with clear formatting and consent rules, not just “another attribute.”
- Decide your canonical phone attribute name. Keep it boring and consistent (for example,
phoneorphone_number). Document it so every integration writes to the same field. - Choose your primary collection source. For most D2C brands, that is Shopify checkout or an SMS capture form. Prioritize the source that has the highest intent and best data quality.
- Normalize formatting to E.164 before it hits Customer.io. If your form tool or integration can output E.164, use it. If not, normalize in your middleware (for example, your ETL, CDP, or a lightweight webhook service) so segmentation does not break across formats.
- Write the phone to the person profile. Update the person attribute whenever you receive a newer number. Avoid writing phone only as an event property if you intend to message later.
- Add SMS consent attributes alongside the phone number. Store explicit flags like
sms_consent(true/false) and optionallysms_consent_timestampandsms_consent_source(checkout, popup, keyword, etc.). - Build a “SMS eligible” segment. Typical rules: phone exists, sms_consent is true, not suppressed, and optionally country is supported for your SMS provider.
- QA with real edge cases. Test a US number, an international number, a number with spaces or parentheses, and a customer who updates their number after first purchase. Confirm your segment membership updates correctly.
When Should You Use This Feature
Getting a phone number in Customer.io is most valuable when you have time-sensitive purchase intent or operational moments where SMS beats email on speed and visibility.
- Abandoned checkout recovery: If a shopper hits checkout and drops, SMS can recover within minutes, especially for mobile-heavy traffic.
- Post-purchase shipping and delivery nudges: Proactive SMS reduces “Where is my order?” tickets and keeps customers warm for the next drop.
- Back-in-stock and low-inventory alerts: High-intent subscribers convert fast when the message lands immediately.
- Reactivation for lapsed buyers: Use SMS selectively for high LTV customers where the margin supports the channel cost.
- Product discovery journeys: For quiz-driven or guided selling funnels, SMS can continue the conversation after a shopper leaves the site.
Operational Considerations
Getting a phone number in Customer.io sounds straightforward, but the operational details determine whether your SMS program scales cleanly or becomes a constant troubleshooting loop.
- Consent and compliance: Treat consent as a first-class field, not a footnote. Build segments that require consent and keep consent source and timestamp for auditing.
- Formatting consistency: If half your records are “(415) 555-2671” and the other half are “+14155552671,” you will eventually mis-segment or fail sends depending on your SMS provider requirements.
- Source of truth: Decide whether checkout, your SMS tool, or your CDP owns the “latest phone.” Then ensure all other sources only update when they are newer or verified.
- Identity and duplicates: Households sometimes share numbers, and some shoppers use different emails across purchases. Plan for how you merge profiles so you do not message the wrong person.
- Orchestration across channels: Set channel fallback logic. A common pattern is SMS first for high intent, then email if no click or purchase within a short window.
Implementation Checklist
Getting a phone number in Customer.io is production-ready when the data, consent, and segmentation rules are stable enough to run unattended.
- Phone attribute name is standardized and documented
- Phone numbers are stored in E.164 format
- SMS consent attribute(s) exist (flag, timestamp, source)
- “SMS eligible” segment is built and QA’d
- Duplicate profile and shared-number edge cases are reviewed
- Fallback logic exists for customers without phone or without consent
- Test sends confirm deliverability and correct personalization
Expert Implementation Tips
Getting a phone number in Customer.io performs best when you design the data model for revenue workflows, not just for storage.
- Use a dedicated eligibility segment, then reuse it everywhere. In retention programs we’ve implemented for D2C brands, the fastest way to create inconsistency is rebuilding “has phone and consent” logic inside every campaign. Centralize it once, then reference it across cart recovery, winback, and back-in-stock.
- Capture phone at the highest-intent moment you can. Checkout collection tends to be cleaner than top-of-funnel popups. If you also run popups, treat them as additive and do not overwrite a verified checkout number with a low-quality entry.
- Store country or locale when possible. It helps with send windows, compliance rules, and tailoring offers (for example, shipping cutoffs by region).
- Build a “number updated” event. In programs we’ve implemented for D2C brands, triggering a quick confirmation or preference message after a number update reduces misdirected messages and improves long-term list quality.
Common Mistakes to Avoid
Getting a phone number in Customer.io can quietly underperform when teams skip the unglamorous parts, like formatting rules and consent discipline.
- Storing phone only on events: If the number is not on the person profile, it is harder to segment reliably and you will miss sends in downstream journeys.
- Overwriting good data with bad data: A typo from a popup should not replace a verified checkout number. Add rules for “last verified wins.”
- Missing consent fields: Having a phone number is not the same as permission to text. Build consent into your segmentation from day one.
- Ignoring international formatting: Even if you mostly sell in one country today, formatting debt shows up the minute you expand.
- No fallback plan: If SMS eligibility fails, you still want the shopper to receive the cart recovery email, not fall out of the journey.
Summary
Use getting a phone number in Customer.io when SMS can shorten time-to-conversion, especially for checkout recovery and post-purchase moments. The revenue lift comes from clean formatting, explicit consent, and reusable eligibility segments inside Customer.io.
Implement with Propel
Propel can help you collect, normalize, and operationalize phone numbers so your Customer.io SMS journeys stay compliant and drive repeatable revenue. book a strategy call.