Reply.io Integration
Use the Reply.io integration to push contacts from your Medialyst media list straight into a Reply.io campaign. The cleanest workflow is to generate personalized opening lines in Medialyst first, then send those values to Reply.io as custom variables.
Before You Start
You will need:
- A Medialyst table with journalist contacts
- A Reply.io campaign ready to receive contacts
- An email column mapped for each row you want to sync
Generate the opener in Medialyst first
This is optional, but recommended. Medialyst has richer journalist context than Reply.io, including recent articles, profile data, and your pitch angle. That usually leads to better first-line personalization.
1. Generate Personalized Opening Lines
If you already have a personalization column, you can reuse it. If not:
- Click Add a column
- Select Use AI
- Write a prompt like:
Write a short and punchy opening line for this journalist.
# Journalist
Name: {{Journalist Profile}}.name
Publication: {{Journalist Profile}}.publicationName
# Journalist's Recent Articles
{{Recent Articles}}.recentArticles
# Pitch Angle
{{Pitch Angle}}- Insert the columns you want to use as context, such as the journalist profile, recent articles, and your personalized pitch angle
- Pick your preferred AI model
- Run the column and review a few rows before syncing the full list
2. Add the Reply.io Contact Column
- Click Add a column
- Select Reply.io: Add Contact
- Open the column settings
3. Connect Your Reply.io Account
- In Reply.io, go to Settings -> API Key
- Copy your API key
- In Medialyst, click Connect Reply.io
- Enter a recognizable Name such as
My Outreach Account - Paste the API key
- Click Test
- Click Save
4. Choose the Campaign and Map Your Fields
- Select your Reply.io Connection
- Select the Campaign you want to sync into
- Map the required Email field
- Optionally map First Name and Last Name
- Under Custom Variables, click Add Variable
- Enter a key such as
opening - Map that variable to your AI-generated opening line column
- Hover over mapped values to preview sample data before running
If you do not see the campaign you need, create it in Reply.io first, then refresh the campaign list in Medialyst.
5. Save and Run
- Click Save and run
- Medialyst queues the contacts and pushes them to Reply.io
- A full list usually finishes in about 10-15 seconds
- Open the Reply.io campaign to confirm the contacts and custom fields were populated
6. Use the Fields in Reply.io
Once the contacts are in Reply.io, reference the mapped fields in your email template.
- Use
{first_name}for the built-in first-name field - Use
{opening}for the custom opening line variable from Medialyst
Example:
Hi {first_name},
{opening}
I thought this might be relevant because...Preview the sequence in Reply.io before you launch it so you can catch missing values or awkward phrasing.
7. Editing and Re-Running
If you want to improve the personalization:
- Open the AI column menu (
...) and click Edit - Change the prompt or model
- Click Save and run again to regenerate the opening lines
- Re-run the Reply.io: Add Contact column if you want Reply.io to receive the latest values
You can also reopen the Reply.io column settings at any time to change the campaign, update mappings, or add new custom variables.
Best Practices
- Use a validated email column when possible. Email is required for the sync.
- Keep custom variable keys simple, such as
openingorpitch_angle. - Generate personalization in Medialyst, not inside Reply.io, when you want article-aware opening lines.
- Use Move contact if already in another campaign only when you want Reply.io to reassign an existing contact.
- Test on a small batch first, then run the full list once the values look right.
Troubleshooting
Connection test fails - Double-check that you copied the correct Reply.io API key and try testing again.
Campaign list is empty - Make sure you selected a Reply.io connection, then refresh the campaign list. If the campaign does not exist yet, create it in Reply.io first.
Custom variable is blank in Reply.io - Confirm the variable key is mapped to a populated Medialyst column, then rerun the sync.
Some rows do not sync - Check that the mapped email field has a value for those rows.