If you’re working on a mobile app and want to actually reach users—not just toss messages into the void—push notifications are the way to go. But random blasts are annoying and pointless. You want to send the right message, to the right person, at the right time. That’s where Customer.io comes in.
This guide is for product folks, marketers, or mobile devs who want to set up targeted push notifications using Customer.io. I’ll walk through setup, targeting, and a few honest warnings about what doesn’t work as smoothly as you’d hope.
1. Get Your Tech Ducks in a Row
Before you can send push notifications, your app needs to be set up to receive them. This part is usually more annoying than it should be—especially if you haven’t done it before. Here’s what you’ll need:
- A working mobile app (iOS and/or Android)
- Customer.io account (Journeys plan or higher)
- Firebase Cloud Messaging (FCM) for Android
- Apple Push Notification service (APNs) for iOS
- Customer.io SDK integrated into your app
Pro tip: If you’re still evaluating push providers, there’s no magic bullet. Customer.io is solid for segmentation and automation, but it doesn’t abstract away all the native mobile pain points.
1.1. Set Up Your Push Credentials
- Android: Get your FCM server key and sender ID from the Firebase console.
- iOS: Generate an APNs Auth Key in your Apple Developer account.
You’ll need to plug these into Customer.io’s push settings. If your dev team is handling this, make sure they’re actually testing with real devices—not just emulators.
1.2. Install and Configure the Customer.io SDK
- For iOS, use CocoaPods or Swift Package Manager.
- For Android, add the SDK dependency to your
build.gradle
.
The SDK is what ties your app to Customer.io and lets you send device tokens (the unique identifier for each user’s phone).
Don’t skip: Make sure you’re sending the device token to Customer.io after the user opts in to notifications, or you’ll wonder why nothing’s working later.
2. Map Your User Data (Don’t Wing It)
Targeted notifications are only as good as your user data. Customer.io uses “profiles” to represent users. If you want to send a message to all users who haven’t logged in for 7 days, you need to know who’s logged in and when.
2.1. Identify Users
When a user logs in or signs up, send their unique ID to Customer.io. This can be an email, user ID, or whatever makes sense for your app.
swift // Example for iOS (Swift) CustomerIO.shared.identify(userId: "12345", traits: ["email": "user@example.com"])
kotlin // Example for Android (Kotlin) CustomerIO.instance().identify("12345", mapOf("email" to "user@example.com"))
2.2. Add Custom Attributes
The fun starts when you add custom attributes: last login date, subscription status, or anything else you want to segment by. Don’t overload it—focus on what you’ll actually use.
Pro tip: If you’re unsure, start basic. You can always add more attributes later, but cleaning up a messy data model is a headache.
3. Build Your Segments (a.k.a. Who Gets What)
Now that Customer.io knows who your users are, you need to decide who should get your messages. Segments are just saved groups based on user attributes or events.
3.1. Example Segments
- Inactive users: Last login > 30 days ago
- Trial users: Subscription status = “trial”
- Power users: Completed 10+ actions in the last week
You can build these in the Customer.io dashboard—no code required. But double-check your logic. It’s easy to accidentally target everyone or no one.
3.2. Event-Triggered Segments
You can also set up segments based on events, like “added item to cart but didn’t checkout.” For that, you’ll need your app to send custom events to Customer.io.
swift // Example: Track event in iOS CustomerIO.shared.track(name: "added_to_cart", data: ["item_id": "abc123"])
4. Set Up Your Push Notification Workflow
This is where you actually create and trigger the notifications. Customer.io calls these “Campaigns” or “Workflows.”
4.1. Choose Your Trigger
You’ve got a few options:
- Segment-triggered: When a user enters a segment (e.g., becomes inactive)
- Event-triggered: When a specific event happens (e.g., completes a purchase)
- Manual: You pick and send (useful for quick announcements)
Segment and event triggers are the real power here, though they take more setup.
4.2. Design Your Workflow
In the Customer.io dashboard:
- Create a New Campaign.
- Pick your trigger: Choose segment or event.
- Add a “Push Notification” action.
- Set timing: Immediate or with a delay (e.g., 1 hour after the event).
- (Optional) Add conditions: Only send if the user is on iOS, or if a certain attribute is true.
Don’t overcomplicate your first workflow. Start with something simple and work up from there.
5. Write Your Push Notification (and Don’t Be Annoying)
Push notifications have tiny real estate. If you try to cram too much in, you’ll get cut off—or worse, ignored. Here’s what matters:
- Title: Short and direct (“Finish your purchase”)
- Body: What’s in it for the user? (“Your cart is waiting for you”)
- Deep link: Take the user to the right screen in your app.
Customer.io lets you use personalization (like the user’s name or favorite category). But don’t force it—“Hey John, your cart is waiting” only works if your data is actually clean.
Pro tip: Avoid ALL CAPS and urgent language unless it’s truly important. If every notification is “ACT NOW,” users will ignore them—or worse, block you.
6. Test Everything (Seriously)
Don’t assume it works because it “should.” Push notifications fail silently all the time—bad credentials, wrong device token, user opt-out, the list goes on.
6.1. Test Scenarios
- Opted-in user: Confirm they actually get the message.
- Opted-out user: Make sure they don’t get anything.
- Multiple devices: See what happens if the same user has two phones.
- Different OS: Test on both Android and iOS.
Customer.io has built-in test tools, but nothing beats using a real device.
Heads up: Apple and Google will silently drop notifications if your setup’s wrong. If something looks off, check your logs and push credentials first.
7. Go Live and Watch the Results
Once you’re confident in your workflow, hit “Start” in Customer.io. But don’t just walk away.
- Monitor delivery rates: Low numbers? Your device tokens might be stale.
- Track opens and conversions: Customer.io can show you who opened the push and took action.
- Iterate: If your notification gets ignored, tweak your message or timing. Don’t spam—one relevant message beats three generic ones.
What’s Worth Ignoring
- Over-engineered personalization: If you have messy or missing data, don’t force first names or custom offers. It’ll backfire and look lazy.
- Too many notifications: More isn’t better. If users get annoyed, they’ll opt out or uninstall.
- Complex logic from day one: Start simple. You can always get fancier later.
Quick Recap: Keep It Simple, Iterate Fast
Getting targeted push notifications working in Customer.io isn’t rocket science, but it’s easy to overthink. Focus on clean user data, simple segments, and clear messages. Test on real devices and don’t trust that “everything’s working” until you see it with your own eyes.
Start small, learn what your users actually respond to, and tweak from there. That’s how you avoid spamming people—and actually get results.