Everything you need to know
Loylty is a B2B outreach platform that fills and queues contact forms on contractor websites — automatically. This guide covers every feature from setup to your first live campaign.
What is Loylty?
Loylty is a B2B outreach automation tool designed for businesses that sell products or services to contractors. Instead of cold emails that land in spam, Loylty finds and fills the contact forms directly on each contractor's website — putting your message exactly where they'll see it.
You provide a list of target companies (or pull them from the built-in database), write your outreach message once, and Loylty handles the rest: opening each contact page, identifying the form fields, pre-filling your information, and queueing everything for your final review before anything gets sent.
How It Works
-
1Import your list. Upload a CSV of target companies, or pull contacts directly from the Loylty database of 1.6M+ contractor businesses across the US.
-
2Write your message. Create one or more message templates using simple tags like
{{company_name}}and{{city}}. Loylty rotates variations automatically so your outreach doesn't look templated. -
3Run the campaign. Loylty opens each contact page in an automated browser, maps the form fields (Name, Email, Phone, Message), pre-fills your sender info, and generates the outreach message.
-
4Review and send. Records that need your attention surface as Needs Manual — you review, edit if needed, and click Submit. You're in control of every send.
-
5Track results. The activity log and queue give you a full picture of what's been processed, what succeeded, and what needs follow-up.
Quick Start Guide
From a fresh account to your first campaign in under 10 minutes.
Step 1 — Create a Sender Profile
Go to Sender Profiles in the sidebar and click + to create your first profile. Fill in your name, email, phone, and company. This is the information that gets pre-filled into contact forms on your behalf.
Step 2 — Create a Campaign
From the Dashboard, click New Campaign. Give it a name and assign it to your sender profile. The campaign is your container for a list of target companies and the message templates you want to send them.
Step 3 — Add Records
You have two options:
-
AImport a CSV. Go to the campaign's Queue tab and click Import CSV. Your file needs at minimum a
company_nameandwebsite_urlcolumn. See the CSV Format Reference for all supported columns. -
BPull from the Database. Go to the Database page in the sidebar. Search by industry, state, or city — then select records and click Pull to add them directly to your campaign.
Step 4 — Write Your Templates
Go to the Templates tab inside your campaign. Write at least one message. Keep it concise — 3 to 5 sentences works best. Use {{company_name}} and {{city}} to personalize automatically.
Step 5 — Run the Campaign
From the campaign overview, click Start. Loylty will begin processing records in the background. You can monitor progress on the Dashboard or watch the queue update in real time under the Queue tab.
Sender Profiles
A sender profile stores the contact information that gets pre-filled into contact forms. Each campaign is linked to one sender profile, so you can run separate campaigns for different brands, regions, or team members.
Contact Fields
(555) 555-5555) to match most form expectations.AI Form Detection
Contact forms vary enormously in their field labels and structure. Standard CSS selectors catch the common patterns (name, email, message), but unusual fields — "Your Industry", "Project Budget", "How did you hear about us?" — are missed without AI assistance.
When an Anthropic API key is added to your sender profile, Loylty uses AI to read the visible form and map unknown fields to the best available value from your sender info. This dramatically improves fill rates on custom or complex forms.
CAPTCHA Auto-Solve
Some contact forms include CAPTCHAs that block automated browsers. With a CAPTCHA solving API key configured, Loylty automatically solves them instead of routing the record to your manual queue.
CAPTCHA solving costs approximately $1–3 per 1,000 solves. For most campaigns the cost is negligible.
Email Fallback (SMTP)
When a contact page has no form but lists a mailto: email address, Loylty can send your message directly via email instead of skipping the record. Configure your outgoing mail server (SMTP) to enable this.
Works with Gmail, Outlook, Yahoo, and any provider that supports SMTP. For Gmail, use a 16-character App Password generated at myaccount.google.com rather than your regular password.
| Provider | SMTP Host | Port |
|---|---|---|
| Gmail | smtp.gmail.com | 587 |
| Outlook / Hotmail | smtp-mail.outlook.com | 587 |
| Yahoo | smtp.mail.yahoo.com | 587 |
Residential Proxy
Some websites detect and block data center IP addresses. A residential proxy routes your browser traffic through real residential IPs, making your automated sessions indistinguishable from normal web browsing.
Recommended for campaigns over 500 submissions/day or in industries where websites are more likely to block bots. Compatible with IPRoyal, Smartproxy, Brightdata, and any provider that supports username/password proxy authentication.
Campaigns
A campaign is the core unit of work in Loylty. It ties together a list of target companies, a sender profile, and a set of message templates. You can run multiple campaigns simultaneously — by geography, niche, or offer.
Importing Records
From inside a campaign, go to the Queue tab and click Import CSV. Loylty accepts standard comma-separated files. Column headers are matched case-insensitively, so Company Name and company_name both work.
CSV Format Reference
Required columns are marked REQUIRED. All other columns are optional but improve fill rates and personalization.
company_name,website_url,contact_page_url,contact_email,city,state,category
"Acme Fence Co","https://acmefence.com","https://acmefence.com/contact","info@acmefence.com","Austin","TX","Fence Contractor"
"Southwest Fencing","https://swfencing.com","","","Phoenix","AZ","Fence Contractor"
| Column | Description |
|---|---|
company_name REQUIRED | The business name. Used in template tags and form fields. |
website_url REQUIRED | The company's main website. Used to find the contact page if none is provided. |
contact_page_url | Direct URL to the contact page. If provided, Loylty goes here first instead of crawling the site. |
contact_email | A known contact email. Used for email fallback if no form is found. |
facebook_url | Facebook business page URL. Used as a fallback contact method. |
city | City name. Enables the {{city}} template tag for local personalization. |
state | 2-letter state abbreviation (e.g. TX). Enables the {{state}} tag. |
category | Business type or vertical. Enables the {{category}} tag. |
Running a Campaign
From the campaign overview, click Start to begin processing. Loylty runs records in the background — you can navigate away, work on other campaigns, or close the tab without interrupting it.
Use Pause to stop processing after the current record completes. Resume picks up from where it left off. Records that are already in progress when you pause will complete before stopping.
Message Templates
Templates are the outreach messages that get filled into the "Message" field of each contact form. A well-written template is concise, specific, and gives the contractor a clear reason to respond.
Template Tags
Tags are replaced with real data from each record at send time. This lets one template feel personalized across thousands of companies.
| Tag | Replaced With | Example Output |
|---|---|---|
{{company_name}} | The company's name | Acme Fence Co |
{{city}} | The company's city | Austin |
{{state}} | The company's state | TX |
{{category}} | Business type/vertical | Fence Contractor |
{{website_url}} | The company's website | https://acmefence.com |
Hi {{company_name}} team,
I'm reaching out because we work with {{category}}s across {{state}} and
I think there might be a great fit here.
We supply commercial-grade fencing materials at contractor pricing —
typically 15–20% below retail. Would love to connect and see if we
can help {{company_name}} save on your next job.
– [Your Name]
Message Variations
You can create multiple message templates within a single campaign. Loylty rotates through them evenly — so if you have 3 templates and 300 records, each template gets used roughly 100 times.
Variation prevents your outreach from looking mass-produced if multiple contractors in the same area compare notes. It also lets you A/B test different angles or offers over time.
AI Personalization
When AI mode is enabled on a campaign, Loylty reads visible content from the contractor's website — their specialty, recent projects, location — and uses it to write a personalized opening sentence for your message.
The result: outreach that references their actual business instead of generic tags. Response rates improve significantly when the recipient can tell the message was written specifically for them.
The Database BETA
The Loylty database contains 1.6M+ contractor businesses across the United States, pulled from public sources and updated regularly. It's available on Starter and Pro plans for finding new prospects without building your own list.
Search by industry vertical, state, city, or keyword. Filter by whether the business has a known email, phone number, or Google rating. Sort by rating or review count to prioritize the most established businesses.
Pulling Records into a Campaign
Once you've filtered to a set of prospects you want to target, select them using the row checkboxes or use the count input to pull a specific number from the current filter. Then choose the destination campaign and click Pull Records.
Loylty pulls up to 500 records per pull. For larger lists, pull in batches or use different filter combinations across multiple pulls.
Beta Limitations
The database is in active development. Current known limitations:
- Some category names have duplicates (e.g. "Roofer" and "Roofers") — being cleaned up
- Geographic coverage is stronger in major metro areas than rural regions
- Contact page URLs and emails may be outdated for businesses that have changed their website
- Not all businesses have phone, email, or Google rating data
We're continuously expanding coverage and cleaning data. If you need records for a specific region or vertical that seems thin, contact us — we prioritize based on demand.
Queue & Statuses
Every record in a campaign has a status that reflects where it is in the outreach process. The Queue tab lets you filter, manage, and take action on records by status.
| Status | Meaning | What to do |
|---|---|---|
| New | Hasn't been processed yet. Waiting in line to run. | Nothing — it'll process when you start or resume the campaign. |
| Completed | The form was found, filled, and submitted successfully. | Nothing required. This is the happy path. |
| Needs Manual | The form was found but couldn't be submitted automatically — requires human action. | Click Open to review in the browser, then submit manually. |
| Skipped | You chose to skip this record during manual review. | No action needed. Retry if you change your mind. |
| Error | Something went wrong during processing — site was down, timeout, browser crash. | Use Retry All Errors to reset these back to New for another attempt. |
| No Form Found | Loylty crawled the site but couldn't find a contact form anywhere. | Check the URL manually. Some sites use third-party form tools that aren't crawlable. |
| No Contact | The website returned no usable contact method — no form, no email, no Facebook. | No action available. This business may have a broken or missing contact page. |
| Dead Website | The website was unreachable — domain may be expired or server is down. | Retry after some time or remove the record. |
Handling Needs Manual Records
Records land in Needs Manual when Loylty successfully opened the contact page and pre-filled the form, but can't complete submission automatically — most often due to CAPTCHAs, unusual form structures, or bot detection.
Click Open next to any Needs Manual record to open the browser window directly to the pre-filled form. Review the fields, make any edits, solve the CAPTCHA if present, and click Submit yourself. Then mark it Done in the queue.
Retrying Failures
Use the ↺ Retry All button when viewing any error-type status filter (Error, No Form Found, Dead Website, Skipped, Needs Manual). This resets all matching records back to New so they run again on the next campaign start.
Useful after fixing a configuration issue, adding a CAPTCHA key, or retrying sites that were temporarily down.
Settings
Performance Tuning
Two knobs control how aggressively Loylty processes records:
Business Information
The business info fields in Settings are for your internal records only — your legal name, DBA, address, EIN. This information is never shared with anyone or pre-filled into outreach forms. Outreach sender info lives in Sender Profiles.
Billing & Plans
| Plan | Daily Limit | Monthly Est. | Price |
|---|---|---|---|
| Starter | 100 submissions/day | ~3,000/month | $99/mo |
| Pro | 300 submissions/day | ~9,000/month | $299/mo |
| Agency | 500 submissions/day | ~15,000/month | $499/mo |
All plans include unlimited campaigns, template rotation, the activity log, and email support. The Database is available on Starter and above (currently in beta). Annual billing saves 20%.
To upgrade, downgrade, or cancel, go to Billing in the sidebar and click Manage Plan. You'll be taken to the Stripe customer portal where you can make changes instantly. Cancellations take effect at the end of the current billing period — you keep full access until then.
FAQ
Does Loylty ever submit forms without my approval?
No. Never. Loylty fills forms and queues records for your review, but the final submit is always a human action. This is a core design principle and will not change.
What happens if a website doesn't have a contact form?
Loylty tries multiple approaches in order: the provided contact page URL, crawling the site for a contact page, a mailto link. If none are found, the record is marked No Form Found. If you have SMTP configured and the site has a mailto link, Loylty sends via email instead.
How many records can I have in a campaign?
There's no hard limit on records per campaign. Practically, most users run campaigns of 200–2,000 records per batch. Larger lists are best broken into multiple campaigns by state or category for easier tracking and template tuning.
Can I run multiple campaigns at the same time?
Yes. All running campaigns share the concurrent browser pool configured in Settings. If you have 3 browsers and 2 running campaigns, they compete for those 3 slots. Increase concurrency in Settings if you want to run several campaigns in parallel without them slowing each other down.
Why does a record keep landing in Needs Manual even after I retry it?
The most common causes are: a CAPTCHA that isn't being solved (add a CAPTCHA key to your sender profile), bot-detection JavaScript that blocks the browser (add a residential proxy), or a form that requires a non-standard interaction like a file upload or multi-step process (these require manual handling).
Is there an affiliate program?
Yes. You earn 20% monthly recurring commission for every paying customer you refer — for as long as they stay subscribed. Find your unique referral link in the Affiliates section of the app.
Troubleshooting
Campaign starts but records immediately go to Error
This usually means the browser couldn't load the target URL. Check that the website URLs in your CSV are valid and reachable. Try opening a few of them manually. If they work in your browser but not in Loylty, the site may be using bot detection — add a residential proxy to your sender profile.
All my records are No Form Found
This can happen when your CSV's website_url column contains homepages but the contact page is buried under a non-standard URL. Try adding a contact_page_url column with direct links to the contact page for each company. The Database records include contact page URLs where known.
The Database industry dropdown shows only a few options
The dropdown loads verticals from the database. If it appears to be loading slowly or showing limited results, try refreshing the page. If the issue persists, contact support.
I'm getting a lot of CAPTCHA failures
Add a CAPTCHA solving API key to your sender profile. Records with unsolvable CAPTCHAs route to Needs Manual rather than failing outright — so you can still submit them manually. Long-term, a residential proxy reduces the frequency of CAPTCHAs being triggered in the first place.
Template tags aren't being replaced
Check that your CSV columns match the expected tag names exactly: company_name, city, state, category, website_url. If a column is missing or blank for a record, the tag is left empty in the message — so a template with Hi {{company_name}} becomes Hi if the column is absent. Fill in the data or remove the tag from the template.
Still stuck?
Email support@loylty.io and describe what you're seeing. Include the campaign name, which status the records are landing in, and a sample URL from your list if relevant. We typically respond within one business day.