AI Personalization
Auto-personalize your pitch on every submission with placeholders, custom prompts, and the AI Wallet.
AI Personalization is an optional feature that rewrites your pitch on a per-website basis, inserting details specific to each target so every message reads like it was written for them. Here is what it does, when to use it, and how much it costs.
1. What The AI Does
When AI Personalization is on for an agent, ContactID runs each submission through an AI model at send time. The AI:
- Reads the target website’s about page or homepage.
- Identifies a specific detail (a recent launch, a product mention, a team hire, a company milestone).
- Rewrites your pitch to open with a reference to that detail.
- Keeps your ask and value proposition intact. Only the framing changes.
The result is a message that reads like you spent 10 minutes researching the recipient, without you actually doing that.
2. Example Before And After
Original pitch (agent template):
Hi, I run Acme Design Studio and we specialize in enterprise landing pages. Recent clients include Stripe and Notion. If a free portfolio audit sounds useful, reply and I’ll send it in the next 48 hours.
Personalized for a target website with a recent product launch:
Hi, I noticed you just launched your Growth analytics product last week (congrats on the momentum). I run Acme Design Studio and we specialize in enterprise landing pages, exactly the kind of thing that helps a new product launch convert. Recent clients include Stripe and Notion. If a free portfolio audit of your new product page sounds useful, reply and I’ll send it in the next 48 hours.
The first sentence is what changes; the rest stays your pitch.
3. When AI Personalization Is Worth It
Turn it on when:
- You are doing cold outreach where reply rate matters (as opposed to volume broadcasts).
- Your list is targeted enough that per-website context makes sense.
- You are comfortable with the AI cost (see below).
Skip it when:
- Your pitch is already generic on purpose (like a broad announcement).
- Your list is very cold and you want to test at high volume first.
- Your AI wallet is empty and you do not want to top up.
4. Cost Per Message
AI Personalization costs on average $0.0003 to $0.001 per send, depending on the AI model in use and the target website’s content length. For a 1,000-URL batch:
- Typical cost: $0.30 to $1.00.
- Worst case (large target pages): $2 to $3.
This is charged from your AI wallet, separate from your website credits.
5. Which AI Model Is Used
ContactID uses a rotating model backend for reliability. As of the current release the primary model is GPT-4o-mini, with Groq Llama and Google Gemini as failover. You do not need to pick; ContactID handles the routing.
The exact model in use is shown on the AI Personalization page.
6. Enabling AI Personalization
- Go to AI Personalization in your dashboard sidebar.
- Find the agent you want to enable.
- Toggle AI Enabled on.
- Confirm the AI wallet has a balance (top up if needed).
- Save.
The change takes effect on your next batch. Batches already in progress do not switch mid-run.
7. Manual Placeholders (For Advanced Users)
Advanced users can use manual placeholder syntax in their pitch. For example, writing {sell} in the pitch tells the AI to fill that placeholder with a sales-focused phrase for the current target. See the article on creating custom AI prompts for details.
Enabling AI Personalization for an agent takes about a minute: turn it on, top up your AI wallet, and confirm the pitch template is ready. Here is the full walkthrough.
1. Open The AI Personalization Section
- Sign in to your dashboard.
- Click AI Personalization in the left sidebar.
- The screen shows every agent you have created, each with an AI-enabled toggle.
2. Enable AI On Your Agent
- Find the agent you want to personalize.
- Toggle AI Enabled to on.
- A prompt appears asking you to confirm your AI wallet balance. If empty, click Top Up to add credit.
You can enable AI on some agents and leave it off on others. Each is independent.
3. Confirm The Pitch Template
With AI on, your existing pitch becomes the AI’s template. The AI rewrites the first one or two sentences and preserves the rest. Review your pitch to check:
- The hook (first sentence) is generic enough for the AI to rewrite naturally. Something like “I noticed your recent post on X” gets replaced with “I noticed [your actual product launch]”.
- The value and ask (middle and end) are strong even without personalization, since these stay verbatim.
4. Optional: Add Manual Placeholders
For fine-grained control, add placeholders in curly braces in your pitch. Examples:
{sell}— inserts a short pitch phrase tailored to the target.{intro}— inserts a personalized opening line.{recentPost}— inserts a reference to a recent post or announcement on the target website.
You can define your own placeholders under AI Prompts in the same page. See the article on custom AI prompts.
5. Top Up Your AI Wallet
If your AI wallet is at zero, ContactID cannot run personalization. Top up:
- Click Top Up AI Wallet on the AI Personalization page.
- Pick an amount (minimum $5).
- Complete checkout via Stripe.
Top-ups are separate from website credits. Every subscription plan comes with a small monthly AI wallet credit, but heavy personalization users typically top up manually.
6. Test On A Small Batch First
Before running 1,000 URLs with AI on, run 10 first. Watch:
- Personalization quality. Does the AI actually reference target-specific details? Or does it insert generic filler?
- Cost per send. Divide total AI spend by number of sends to see per-message cost.
If the quality is poor, refine your pitch template (make the first sentence more replaceable) or adjust your custom AI prompts.
7. Turning AI Off
Toggle AI Enabled off any time. Your pitch reverts to being sent verbatim. Batches in progress continue with AI on until they finish; the toggle takes effect on new batches.
Placeholders are the syntax for inserting AI-generated content into a specific spot in your pitch. Instead of the AI rewriting everything, placeholders give you fine control over what changes and what stays. Here is how they work.
1. The Placeholder Syntax
Placeholders are text in curly braces. Examples:
{sell}{intro}{recentPost}{customPlaceholderName}
When ContactID sends the pitch, every placeholder is replaced with AI-generated content specific to the target website.
2. Built-In Placeholders
ContactID ships with these placeholders ready to use:
{intro}— A one-sentence personalized opener referencing the target.{sell}— A short sales pitch tailored to the target’s business.{compliment}— A brief acknowledgment of something the target is doing well.{recentPost}— Reference to a recent blog post or announcement on the target’s site.{ask}— A tailored version of your ask, in the recipient’s language.
You can use any of these in your pitch without setup.
3. Example Pitch Using Placeholders
Template:
Hi, {intro}
> I run Acme Design Studio. {sell}
> If a free portfolio audit sounds useful, reply and I’ll send it in the next 48 hours.
At send time, {intro} and {sell} get filled per target. The rest stays as written.
4. Placeholder Behavior
- Placeholders are case-insensitive.
{Sell}and{sell}both work. - Unknown placeholders are left in place. If you type
{typo}and there is no prompt for it, it stays as literal{typo}in the sent message. Bad; proofread before batch send. - Nested placeholders are not supported. You cannot have
{sell {compliment}}. - One placeholder can be used multiple times.
{intro}at the start and{intro}again later works but reads awkward.
5. When Placeholders Fire
Placeholders are resolved at send time, per target website. Each placeholder is a separate AI request:
- Cost. Each placeholder is billed independently. A pitch with three placeholders costs about 3x a pitch with one.
- Failure handling. If one placeholder fails (AI service timeout), that specific placeholder is skipped and its text stays as literal
{name}in the send. The rest of the pitch is unaffected.
For heavy volume, keep to one or two placeholders per pitch.
6. Full-Message Rewrite Vs Placeholders
There are two AI Personalization modes:
- Full-message mode (default). No placeholders needed. The AI rewrites your first sentence per target.
- Placeholder mode. You control exactly what changes. Turn off full-message rewrite in AI settings to use this mode purely.
Most users start with full-message mode. Advanced users switch to placeholders for tighter control.
7. Testing Your Placeholders
- Go to AI Personalization, then Test Prompt.
- Enter a sample target URL.
- Click Preview.
- The preview shows exactly what would be sent, with placeholders resolved.
Useful for tuning custom placeholder prompts before a big batch.
Beyond the built-in placeholders, you can define your own. Custom prompts give you full control over how the AI personalizes each part of your pitch. Here is how to create them.
1. What A Custom Prompt Contains
Every custom prompt has two parts:
- A placeholder name. What you type in your pitch (e.g.,
{myOpener}). - An AI instruction. What the AI is told to generate for that placeholder.
At send time, the AI reads the target website plus your instruction and produces the replacement text.
2. Create A New Prompt
- Go to AI Personalization in your dashboard.
- Scroll to Custom Prompts and click New Prompt.
- Fill in:
- Name (used as the placeholder). Letters and numbers only, no spaces.
- Instruction (what to tell the AI).
- Click Save.
3. Writing A Good Instruction
The instruction is a prompt for the AI. Best practices:
- Be specific about tone. “Write in a friendly, professional tone” beats “Write a message”.
- Set a length limit. “Keep it under 20 words.” Otherwise the AI rambles.
- Reference the target. “Reference something specific from the website” tells the AI to look at the actual page, not generate generic filler.
- Include an example. One or two examples of what a good output looks like sharpen results.
Example instruction:
Write a friendly one-sentence opener that acknowledges something specific about the target company. Keep it under 20 words. Do not use “I hope this finds you well”. Example: “Loved your recent post on customer retention.”
4. Test Before Using
Every new custom prompt should be tested:
- Click Test Prompt next to the prompt you just saved.
- Enter three or four sample target URLs (mix of industries).
- Review the generated outputs.
- If they read badly, refine the instruction and re-test.
Testing costs a few cents from your AI wallet, well worth it before running a batch of 1,000.
5. Editing Or Deleting A Prompt
- Click the prompt in the Custom Prompts list.
- Edit the name or instruction and click Save.
- Or click Delete to remove it.
If you delete a prompt that is currently referenced in an agent’s pitch, that placeholder stops resolving; the literal {name} will appear in future sends. Edit the pitch to remove or rename the placeholder.
6. Sharing Custom Prompts
Currently custom prompts are per-account and cannot be shared with teammates. Enterprise plans include a shared prompts library; contact sales for details.
7. Copy-Paste From The Community
The ContactID Discord and forum have a Prompt Library channel with community-contributed prompts. Copy any you like, paste into your Custom Prompts, and use.
The AI wallet is a separate balance from your website credits, used to pay for AI Personalization on each send. Here is how it is loaded, spent, and monitored.
1. What Is In The AI Wallet
Two things share the wallet:
- Purchased balance. Money you added by clicking Top Up. Never expires.
- Monthly subscription credit. A small allowance included with each paid plan, reset monthly.
You spend from purchased balance first. Once purchased balance runs out, the subscription credit takes over. Once both are empty, personalization pauses until you top up.
2. Monthly Subscription Credit Amounts
Each plan includes a monthly AI wallet allowance:
- Starter: $2 per month.
- Growth: $10 per month.
- Pro: $25 per month.
- Scale: $75 per month.
These reset on your billing date each month; unused balance rolls forward for that plan’s included credit only, and is capped at three months’ worth (unused balance beyond that is forfeited).
3. How To Top Up
- Go to AI Personalization, then Top Up AI Wallet.
- Pick a preset amount ($5, $10, $25, $50, $100).
- Or enter a custom amount (minimum $5, maximum $1,000).
- Complete Stripe checkout.
The balance is available immediately.
4. What Each Send Costs
Every AI-personalized send bills a per-request AI cost from the wallet. Typical costs:
- Full-message mode (one AI call): $0.0003 to $0.001 per send.
- Placeholder mode (one call per placeholder): $0.0003 to $0.001 per placeholder.
Very long target website content pushes cost slightly higher. A batch of 1,000 URLs typically costs $0.30 to $1.00 in AI.
5. Estimating Before A Batch
The Import screen shows an estimated AI cost for the batch you are about to run. It uses:
- Number of URLs in the batch.
- Number of placeholders per pitch.
- Recent average cost per send.
Refuse to start a batch if the estimate exceeds your wallet balance; ContactID warns you.
6. Refills On Empty Wallet
If your wallet runs out mid-batch, personalization stops for remaining sends. Two things can happen:
- Fall back to unpersonalized. (Default.) Remaining sends go out with your literal pitch, no personalization.
- Pause the batch. If enabled in settings, the batch pauses until you top up.
Pick the behavior in AI Personalization settings.
7. Refunds On Unused Balance
Purchased balance is refundable within 30 days of purchase if you have not used it. Beyond 30 days it is non-refundable but never expires and can be used any time. Subscription-included credit is not refundable in any case.
Contact [email protected] to request a refund on unused purchased balance.
The AI wallet has its own balance display, top-up flow, and history. Here is where to find each and what actions are available.
1. Where To See Your Balance
Your AI wallet balance is shown in three places:
- Top bar of the dashboard. Small pill next to your website credit count.
- AI Personalization page. Full balance summary at the top.
- Extension side panel. In the Settings menu.
2. Balance Breakdown
The AI Personalization page shows two numbers:
- Purchased balance. From top-ups you made. Never expires.
- Subscription credit remaining this month. From your plan’s included allowance. Resets on your billing date.
Total available is the sum of the two.
3. Top-Up Amounts
Presets on the top-up screen:
- $5 (approximately 5,000 to 15,000 sends worth).
- $10.
- $25 (most common for regular users).
- $50.
- $100.
- Custom (minimum $5, maximum $1,000).
4. Top-Up Process
- Click Top Up AI Wallet.
- Pick the amount.
- Enter payment details in the Stripe checkout (or use your saved card).
- Confirm.
- The balance is added immediately; the amount appears in the balance display within a few seconds.
5. Auto-Recharge (Optional)
For high-volume users, auto-recharge tops up the AI wallet automatically when the balance drops below a threshold.
- Toggle Auto-Recharge on in AI Personalization settings.
- Set the trigger balance (e.g., $2).
- Set the recharge amount (e.g., $25).
- Save.
When your balance drops below the trigger, ContactID charges your saved card the recharge amount and adds it to your wallet. Batches continue without pause.
Auto-recharge fires at most once per hour to prevent runaway spending.
6. Transaction History
- Go to AI Personalization, then History.
- The list shows every top-up (with amount and date) and every AI-personalized send (with per-send cost).
- Click any row for details.
- Export to CSV for bookkeeping.
7. Wallet Credit Vs Website Credit
Do not confuse the two:
- Website credits are consumed on every form submission, regardless of AI.
- AI wallet balance is consumed only when AI Personalization is on for the current send.
A single AI-personalized send costs one website credit AND some AI wallet balance.
ContactID routes AI Personalization requests through a small pool of language models with automatic failover. Here is what is used, why, and how to check the current model.
1. The Primary Model
The default primary is a mid-tier general-purpose language model, currently GPT-4o-mini. It is a good fit for personalization for three reasons:
- Fast. Under a second per request in most cases, which keeps batch throughput high.
- Cheap. Fraction-of-a-cent pricing keeps batch AI costs predictable.
- Good at short-form tasks. Personalization prompts ask for one or two sentences, exactly what this class of model handles well.
2. Failover Models
If the primary is unavailable (rate-limited, temporarily down, or returning errors), ContactID automatically falls through this chain:
- Groq Llama 3.1. Very fast, slightly less nuanced but reliable.
- Google Gemini Flash. Broader context window; useful for target websites with lots of content.
- OpenRouter fallback. A meta-router that picks the best available model at that moment.
The failover is transparent. You do not need to configure it, and the model change is not surfaced per-send.
3. Why Not Just Use The Biggest Model?
Larger models (GPT-4o full, Claude Opus, Gemini Pro) can write personalization slightly better, but they cost 20 to 50 times more per request and are 5 to 10 times slower.
For a 1,000-URL batch, the difference is:
- Mid-tier model: ~$0.50 total AI cost, 30 minutes to finish.
- Large model: ~$15 total AI cost, 3 hours to finish.
The quality lift is small compared to the cost and time hit. ContactID picks the mid-tier by default because it is the right economic tradeoff for automated outreach.
4. Checking The Current Model
- Go to AI Personalization.
- Look at the Model In Use pill at the top right of the page.
- It shows the primary model name and (if applicable) a note when failover is currently active.
5. Can You Pick The Model?
Not on standard plans. Every ContactID account uses the default routing.
Scale-plan and enterprise customers can request a preferred model via support. This is useful when:
- You want a specific model for internal compliance reasons.
- Your industry has a specific language style that one model handles better.
- You are running very large volumes and want to lock in cost predictability.
6. Model Changes Over Time
The default model is reviewed every few months. When a new model becomes available that is cheaper or better, ContactID switches with 30 days notice via the changelog.
Historical batches are not affected by model changes; each send used whatever model was active at that time.
7. Rate Limits At The Model Level
The AI provider (OpenAI, Groq, Google) rate-limits ContactID’s account. If a batch of 10,000 sends fires simultaneously, some may hit the rate limit and use the failover chain. In extreme cases (a very large batch hitting all providers), a small percentage of sends may fall back to no personalization; those go out with the literal pitch instead.
You can see the fallback count in the batch’s Activity summary.
If your AI wallet balance hits zero mid-batch or right before you start one, ContactID has to decide what to do. Here is exactly what happens and how to recover.
1. Two Behaviors On Empty Wallet
ContactID supports two behaviors when the wallet runs empty. You pick which in AI Personalization settings:
- Fall back to unpersonalized (default). Remaining sends go out with your literal pitch, no AI personalization. Your batch continues; only the AI-added layer is dropped.
- Pause the batch. Sending stops on the next AI-personalized URL and waits for you to top up before continuing.
2. Why The Fallback Is Default
Most users prefer to finish the batch even without personalization rather than have a batch stall silently. An unpersonalized cold pitch still gets responses; a stalled batch gets zero.
Pick “Pause on empty” when:
- You are only running AI-personalized outreach and unpersonalized has no value for your use case.
- You have auto-recharge off and want to control every top-up manually.
- Your pitch template is heavily reliant on placeholders that would leave literal
{name}text visible if the AI failed.
3. Recovering After Fallback Fired
If a batch fell back to unpersonalized:
- The affected sends are marked in Activity with a “no AI (wallet empty)” tag.
- You can review them and decide whether to resend with AI once you top up.
- Resending consumes another website credit per URL; see the article on duplicate URLs for cooldown rules.
4. Recovering After Pause
If a batch paused:
- Open the Import Job.
- The pause reason is shown at the top: “Paused: AI wallet empty.”
- Top up your wallet.
- Click Resume Batch.
- Sending continues from where it stopped.
5. Preventing The Situation
Two features stop you from hitting empty:
- Pre-batch estimate. Every batch shows an estimated AI cost before it starts. If the estimate exceeds your balance, ContactID warns you.
- Auto-recharge. Configured under AI Personalization settings. When the balance drops below a threshold you set, ContactID tops up automatically.
Auto-recharge is the “set it and forget it” option for regular users. It fires at most once per hour to prevent runaway spending.
6. Emergency Top-Up During A Batch
If a batch is paused and you need to resume urgently:
- Top up from the top-bar shortcut in the dashboard (fastest).
- Or top up from the AI Personalization page.
- Or use the extension side panel‘s Wallet menu.
Top-ups appear in your balance within a few seconds. Click Resume; the batch continues.
Knowing what AI Personalization costs per send lets you plan a batch, top up correctly, and compare to your reply-rate lift. Here are the numbers and how to estimate.
1. The Typical Cost Range
Per send, AI Personalization costs between $0.0003 and $0.001. That is one to three-tenths of a cent.
Factors that push the cost within that range:
- Target website content length. Longer About pages cost slightly more to read.
- Number of placeholders in your pitch. Each placeholder is a separate AI request.
- Which model handled the request. Failover to a larger model costs slightly more.
2. Real Batch Examples
Recent typical batch costs:
- 200 URLs, full-message mode, one placeholder: $0.10 to $0.20.
- 1,000 URLs, full-message mode: $0.50 to $1.00.
- 1,000 URLs, three placeholders per pitch: $1.50 to $3.00.
- 10,000 URLs, full-message mode: $5 to $10.
Use these as ballpark; your batches will land in this range.
3. Pre-Batch Estimate
Before starting any batch, ContactID shows an AI cost estimate on the Start Batch screen. The estimate uses:
- Number of URLs in the batch.
- Number of placeholders in your pitch.
- Your recent average cost per send.
Accuracy is typically within 20% of the actual final spend.
4. Estimating Your Own Cost
For a fast personal estimate:
- Full-message mode: URLs × $0.001 (worst case).
- Placeholder mode: URLs × placeholders × $0.001.
- Add a 20% safety margin.
Example: 500 URLs, two placeholders. Estimate: 500 × 2 × $0.001 × 1.2 = $1.20. Top up $2 to be safe.
5. How To Reduce AI Cost Per Send
If you are running high volume and want to tighten spend:
- Use full-message mode instead of many placeholders. Fewer AI calls per send.
- Trim your pitch. Shorter pitches are cheaper to rewrite.
- Use precise instructions in custom prompts. “Write one sentence under 20 words” is cheaper than “Write a message about…” because the AI stops sooner.
- Skip AI on cold, low-quality lists. Personalization does not save a bad list; save the AI budget for your best segments.
6. Cost Vs Reply Rate Lift
The whole point of AI Personalization is a reply-rate lift. Typical numbers:
- Unpersonalized cold outreach: 0.5% to 2% reply rate.
- AI-personalized cold outreach: 2% to 8% reply rate.
The 2 to 4x lift means one AI-personalized send is often worth more than one hand-typed unpersonalized send, and both are cheaper than manual research per prospect. The math is clear.
7. AI Cost In Activity Log
Every send in your Activity log shows its per-send AI cost. Sort or filter by AI cost to find:
- The most expensive sends (long target pages).
- Sends where AI cost was $0 (fell back to unpersonalized, wallet was empty).
- Sends with the highest AI cost per reply (if you use reply tracking).
Useful for tuning cost efficiency over time.
Running 1,000 URLs with a bad AI prompt wastes credits and burns replies. Testing your prompt on a few sample URLs first is the single most valuable habit for AI Personalization. Here is how.
1. Where To Test
- Go to AI Personalization in your dashboard.
- Scroll to the Prompt Tester section.
- Enter a target URL and click Preview.
The tester runs your current pitch through the AI exactly as it would be sent, using a sample target URL you provide. You see the final message that would be submitted to the form.
2. Pick Representative Test URLs
Test on three or four URLs that cover the range of your target list:
- A large, well-known company with lots of About-page content.
- A small business or personal brand with sparse content.
- A recent launch or product page so you see if the AI catches specific detail.
- A generic site where the AI has less to work with.
The mix shows you how the AI performs across your real list.
3. What To Look For In A Preview
Read each generated pitch and check:
- Does the personalized part actually reference the target? Not generic filler.
- Is the tone consistent with your intent? Not too formal, not too casual.
- Does it lead naturally into your original pitch? No jarring transitions.
- Length is right? Not too long, not truncated.
If any check fails, refine the prompt and re-test.
4. Iterating On Custom Prompts
For custom prompts specifically:
- Test the prompt in isolation using the tester before adding it to a pitch.
- Test in the context of the full pitch to see how the placeholder reads embedded.
- Try three or four different instruction variations and pick the one that produces the best output on your sample URLs.
5. Testing Cost
Every test consumes a small amount of AI balance, the same as a real send would. Cost is negligible: testing on 10 URLs typically costs $0.01 to $0.05.
Worth every cent to catch bad prompt behavior before wasting a batch.
6. Common Prompt Failures To Catch In Testing
Testing surfaces these classic issues:
- Generic output. The prompt asks for personalization but the AI writes filler. Fix: make the prompt more specific (“Reference something on the About page. Mention it by name.”).
- Wrong tone. The AI writes formal English but your pitch is casual. Fix: set tone in the instruction.
- Length runaway. The AI writes three paragraphs when you wanted one sentence. Fix: add “Under 20 words” to the instruction.
- Placeholder-in-placeholder confusion. If your pitch has multiple placeholders and one references another, they can collide. Fix: keep placeholders standalone.
7. Save Test Results For Comparison
The Prompt Tester has an Export button. Save your test results before making changes so you can compare “before” and “after” side by side when tuning prompts.
8. Testing Frequency
Test before every major change:
- New pitch template.
- New custom prompt.
- Switch of primary AI model.
- New vertical of target website.
You do not need to test before every batch. Once a prompt is validated on your typical URL mix, it stays good for weeks or months.
Still stuck? We’re happy to help.
Install the extension, sign up, or reach out to support directly.




