What is 247Rep
247Rep is an AI-powered customer communication platform. Businesses connect their WhatsApp number or embed a web chat widget, train the AI on their products and brand voice, and the AI handles customer conversations 24/7 — answering questions, taking orders, collecting payments, and managing support.
The platform operates on a pay-as-you-go credit model with no subscriptions or recurring fees. Credits never expire.
Currently supported platforms: WhatsApp and Web Widget. Instagram, Telegram, and Facebook Messenger support is coming soon.
Create your account
- Go to
247rep.app/register. Enter your email, password, and business name. - Verify your email address.
- You land on the dashboard with 20 free credits to test.
- Create your first AI assistant.
Your first AI assistant
An assistant is an AI agent connected to one platform — one WhatsApp number or one web widget. Each assistant has its own knowledge base, personality, products, and conversation history.
You can create multiple assistants for different businesses or different purposes (sales, support, leads).
To create an assistant:
- Click "Create Assistant" from the dashboard.
- Choose WhatsApp or Web Widget.
- Name it and follow the platform-specific setup guide below.
Understanding credits
Every AI response and outbound message consumes credits. Inbound messages from customers are free.
| Action | Cost |
|---|---|
| AI text response | 1 credit |
| Outbound text message | 2 credits |
| Outbound media message | 4 credits |
| Outbound template message | 4 credits |
| Inbound message (from customer) | Free |
Credits are shared across all assistants in your workspace. Purchase credits from the billing page. Credits never expire.
Pricing: $1 USD = 100 credits. ₦1,000 NGN = 100 credits. Other currencies are charged at USD equivalent.
Connect via Embedded Signup
The simplest way to connect WhatsApp.
- Create a WhatsApp assistant from the dashboard.
- Click "Connect WhatsApp" which launches Meta's Embedded Signup flow.
- Log into your Facebook account when prompted.
- Select or create a Meta Business Account.
- Select or create a WhatsApp Business Account.
- Choose the phone number to connect.
- Complete verification.
Connect via BYOK (advanced)
For developers who already have WhatsApp Cloud API access.
- Go to
developers.facebook.comand create a Meta App. - Add WhatsApp as a product.
- Generate a permanent access token from a System User in Meta Business Manager.
- Copy your Phone Number ID and Access Token.
- In 247Rep, create a WhatsApp assistant and select "Connect with API credentials."
- Paste your Phone Number ID and Access Token.
- Configure your webhook URL in Meta to point to the URL provided by 247Rep.
- Test by sending a message to your WhatsApp number.
Verify your business
Meta requires business verification for WhatsApp Business API access. This involves uploading business registration documents (CAC certificate for Nigerian businesses, equivalent registration for other countries) and verifying your business phone number and website.
Verification is free and typically takes 1 to 5 business days.
Understanding the 24-hour rule
Meta's WhatsApp Business API has a 24-hour customer service window. When a customer messages your business, a free service window opens for 24 hours.
During this window, your AI can reply with any message type at no additional Meta fee — only 247Rep credits are consumed.
After 24 hours without a customer reply, the window closes. To message the customer again, you must use a pre-approved template message, which incurs both credits and Meta's per-template fee.
Web Widget Installation
- Create a Web Widget assistant from the dashboard.
- Customise the widget appearance — colours, position, welcome message, avatar.
- Copy the embed code snippet.
- Paste it into your website before the closing
</body>tag.
Web Widget Customisation
Customise from Settings in your web widget assistant dashboard. Options include:
- Widget colour and theme (light, dark, or auto)
- Position (bottom-left or bottom-right)
- Welcome message and avatar image
- Business name shown in header
- Font selection
- Enable or disable voice input
- Enable or disable file sharing
Voice and file sharing
The web widget supports voice input for customers who prefer speaking over typing. When enabled, customers can record voice messages that the AI transcribes and responds to.
File sharing allows customers to upload images and documents directly in the chat. Useful for sharing receipts, screenshots, or other supporting documents.
Both features can be toggled on or off from your widget settings.
Embedding on WordPress, Shopify, Wix
The widget works on any platform:
- WordPress: Paste in your theme footer or use a header/footer plugin.
- Shopify: Paste in
theme.liquidbefore the closing body tag. - Wix: Use the custom code embed feature.
- React / Next.js: Paste in your layout component.
- Plain HTML: Paste before
</body>.
Knowledge base
The knowledge base is what your AI knows about your business. Add information by:
- Typing plain text descriptions of your business
- Pasting your website FAQ content
- Uploading documents (PDF, DOCX, TXT)
- Adding individual Q&A pairs
The AI uses this knowledge to answer customer questions accurately. Keep it concise and factual. Update it whenever your business information changes.
Communication training
Communication training teaches your AI how to sound like you — your tone, vocabulary, and style.
- Upload exported WhatsApp conversations with real customers
- Answer personality questions about your business
- Practice with simulated customer conversations
The AI analyses your communication patterns and generates a personality profile that shapes how it responds. This is what makes your AI sound like your business, not a generic chatbot.
Products and catalog
Add your products in the Catalog section. Each product has:
- Name, description, and price with currency
- Images and variants (size, colour, etc.)
- Availability status
The AI uses this catalog to show products to customers, answer questions about pricing and availability, and take orders.
FAQs and policies
Add frequently asked questions and your business policies (shipping, returns, hours, etc.) to the FAQ section. The AI uses these to provide quick, accurate answers to common questions without needing to reason through your full knowledge base.
Sending messages
The AI sends messages automatically when customers interact with your WhatsApp number or web widget. For manual sending from the dashboard, go to Messages, select a conversation, and type your message.
You can also send messages programmatically via the Developer API.
Receiving messages
All incoming messages appear in the Messages section of your dashboard in real time. Each conversation shows the customer name (if available), phone number, and full message history.
The AI automatically responds to incoming messages based on your knowledge base and communication training. You can disable automation for any conversation to take over manually.
Templates
WhatsApp message templates are pre-approved message formats required for contacting customers outside the 24-hour service window.
Create templates from the Templates section in your dashboard. Each template is submitted to Meta for review and typically approved within 24 hours.
Template categories:
- Marketing: Promotions, offers
- Utility: Order confirmations, shipping updates, appointment reminders
- Authentication: OTP codes, verification
Broadcasts
Send messages to multiple contacts at once. Go to Broadcasts, select your recipients, compose your message or select a template, and send.
Broadcasts send messages one by one to Meta — it is not a bulk send. Each message is delivered individually. A small delay between sends protects your quality rating.
Scheduled messages
Schedule messages to send at a specific date and time. From the Schedule section, create a new scheduled message with the recipient, message content, and delivery time.
Useful for appointment reminders, follow-ups, and timed promotions.
Segments
Segments let you create smart contact lists based on filters. Instead of manually selecting contacts for a broadcast, create a segment like "Customers who spent over ₦50,000" or "Contacts inactive for 2 weeks" and the list updates automatically as contacts match or stop matching your criteria.
To create a segment: go to Segments in your assistant dashboard, click Create Segment, add filter conditions using the dropdown fields, watch the live count update as you add filters, name and save your segment. You can broadcast directly to a saved segment from the Broadcasts page.
Available filter fields include: last message date, sentiment, engagement score, tags, interaction count, purchase behavior, total spent, total orders, budget range, and more depending on your assistant type.
Workflows
Workflows automate your customer engagement with a visual builder. Think of it as autopilot — set up a trigger, add conditions and actions, and your assistant handles the rest 24/7 without you lifting a finger.
A workflow has four types of blocks: Triggers start the workflow when something happens (a new message arrives, an order is placed, a customer goes inactive). Conditions check something about the customer before continuing (do they have a specific tag? is their engagement score above 50?). Actions do something (send a message, add a tag, escalate to human). Delays pause the workflow for a set time before continuing.
To create a workflow: go to Workflows in your assistant dashboard, click Create Workflow or start from a template, drag blocks onto the canvas, connect them by drawing lines between blocks, configure each block by clicking it, save and activate.
Example workflow — Re-engage Inactive Customers: Trigger: Contact inactive for 14 days. Condition: Has ordered before? Yes branch: Send AI message with guidance "remind them about new arrivals". No branch: Send template with a special offer. This runs automatically for every contact that goes quiet.
You can also create custom conditions and actions in plain English. Type something like "customer has asked about returns more than twice" as a condition, and the AI evaluates it automatically.
How orders work
When a customer expresses intent to purchase through a conversation, the AI collects order details — products, quantities, delivery information — and creates an order record. The order appears in your Orders dashboard with all details.
The AI uses your product catalog to confirm pricing and availability before creating an order.
Viewing and managing orders
All orders appear in the Orders section of your dashboard. Each order shows the customer, products, amount, payment status, and conversation link. You can update order status, add notes, and manage fulfilment from this view.
Payment collection
Developer API — Introduction
The 247Rep API gives developers programmatic access to send and receive WhatsApp messages through their connected 247Rep assistant. The API is scoped to one assistant and its connected WhatsApp number. Usage consumes credits from your workspace balance.
Base URL
https://api.247rep.app/v1Authentication
All API requests require an Authorization header:
Authorization: Bearer rep_live_xxxxxxxxxxxxGenerate API keys from the Developer API section in your WhatsApp assistant dashboard.
| Key prefix | Environment | Behaviour |
|---|---|---|
| rep_live_ | Production | Real messages, real credits |
| rep_test_ | Sandbox | Mock responses, no credits consumed |
Quick start
Step 1: Create an API key from your assistant's Developer API page.
Step 2: Send your first message:
const response = await fetch('https://api.247rep.app/v1/messages/send', {
method: 'POST',
headers: {
'Authorization': 'Bearer rep_live_your_key_here',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+2348012345678',
type: 'text',
text: { body: 'Hello from the 247Rep API!' },
}),
});
const data = await response.json();
console.log('Message sent:', data.messageId);Step 3: Receive messages by registering a webhook:
import express from 'express';
import crypto from 'crypto';
const app = express();
app.use(express.json());
app.post('/webhooks/247rep', (req, res) => {
// Verify signature
const signature = req.headers['x-247rep-signature'] as string;
const expectedSig = crypto
.createHmac('sha256', 'your_webhook_secret')
.update(JSON.stringify(req.body))
.digest('hex');
if (signature !== expectedSig) {
return res.status(401).send('Invalid signature');
}
const { event, data } = req.body;
if (event === 'message.received') {
console.log('New message from:', data.from);
console.log('Content:', data.content);
}
res.status(200).send('OK');
});
app.listen(3000);Endpoints reference
Messages
/v1/messages/send/v1/messages/v1/messages/:idConversations
/v1/conversations/v1/conversations/:id/v1/conversations/:id/close/v1/conversations/:id/messagesContacts
/v1/contacts/v1/contacts/v1/contacts/:id/v1/contacts/:idTemplates
/v1/templatesBroadcast
/v1/broadcast/v1/broadcast/:idWebhooks
/v1/webhooks/v1/webhooks/v1/webhooks/:idAccount
/v1/accountExample response
// POST /v1/messages/send
{
"messageId": "clx1abc2def3ghi4jkl",
"whatsappMessageId": "wamid.HBgLMjM...",
"status": "sent",
"creditsUsed": 2,
"creditsRemaining": 98
}
// GET /v1/conversations (paginated)
{
"data": [
{
"id": "clx...",
"customerPhone": "+2348012345678",
"customerName": "Ade",
"messageCount": 24,
"lastMessageAt": "2025-01-15T10:30:00Z",
"serviceWindowOpen": true
}
],
"hasMore": true,
"nextCursor": "clx..."
}Webhooks
Available events:
message.receivedmessage.sentmessage.deliveredmessage.readmessage.failed
Every webhook delivery includes an X-247Rep-Signature header (HMAC-SHA256 of raw body using your secret) and X-247Rep-Timestamp. Verify both before processing.
Respond with HTTP 200 within 5 seconds. Failed deliveries are retried 5 times with exponential backoff.
Signature verification
import crypto from 'crypto';
function verifyWebhook(rawBody: string, signature: string, secret: string) {
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}Rate limits
| Endpoint | Limit |
|---|---|
| POST /messages/send | 100/min |
| POST /broadcast | 10/min |
| POST /contacts | 200/min |
| All GET endpoints | 300/min |
| Global burst | 20/sec |
Every response includes rate limit headers:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1706000000On 429 responses, check the Retry-After header for the number of seconds to wait.
Error codes
All errors return JSON with code, message, and docs fields.
| Code | Status | Fix |
|---|---|---|
| INVALID_API_KEY | 401 | Check your API key is correct and not revoked |
| INSUFFICIENT_CREDITS | 402 | Top up credits from the billing page |
| VALIDATION_ERROR | 400 | Check the request body matches the schema |
| INVALID_PHONE_NUMBER | 400 | Use E.164 format: +countrycode number |
| TEMPLATE_NOT_APPROVED | 400 | Only approved templates can be sent |
| SERVICE_WINDOW_CLOSED | 400 | Use a template to re-engage after 24 hours |
| RATE_LIMIT_EXCEEDED | 429 | Wait and retry after Retry-After seconds |
| META_API_ERROR | 502 | WhatsApp Cloud API issue — retry or check Meta status |
| INTERNAL_ERROR | 500 | Contact support if persistent |
SDKs
@247rep/sdk) is coming soon. For now, the API works with any HTTP client in any language.TypeScript (fetch)
const res = await fetch('https://api.247rep.app/v1/messages/send', {
method: 'POST',
headers: {
'Authorization': 'Bearer rep_live_your_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+2348012345678',
type: 'text',
text: { body: 'Hello!' },
}),
});
const data = await res.json();Python (requests)
import requests
res = requests.post(
'https://api.247rep.app/v1/messages/send',
headers={'Authorization': 'Bearer rep_live_your_key'},
json={
'to': '+2348012345678',
'type': 'text',
'text': {'body': 'Hello!'},
},
)
data = res.json()cURL
curl -X POST https://api.247rep.app/v1/messages/send \
-H "Authorization: Bearer rep_live_your_key" \
-H "Content-Type: application/json" \
-d '{"to":"+2348012345678","type":"text","text":{"body":"Hello!"}}'Credit system explained
247Rep uses pay-as-you-go credits. No subscriptions, no monthly fees, no commitments. Buy credits when you need them, use them across all your assistants. Credits never expire as long as your account is active.
| Action | Credits |
|---|---|
| AI response | 1 |
| Outbound text | 2 |
| Outbound media | 4 |
| Outbound template | 4 |
| Inbound messages | Free |
Pricing by region
| Currency | 100 credits |
|---|---|
| USD | $1.00 |
| NGN | ₦1,000 |
| GBP, EUR, CAD, AUD | USD equivalent via payment provider |
Minimum top-up is 100 credits.
Top up credits
Go to Billing in the dashboard sidebar. Select a credit package or enter a custom amount. Payment is processed securely via Paystack. Credits are added to your workspace immediately after payment.
Transaction history
View all credit transactions from the Billing page. Each entry shows the date, type (purchase or usage), amount, and remaining balance. Filter by date range or transaction type.
Workspace settings
Your workspace is your account. It contains all your assistants, credits, and settings. Update your business name, email, and profile from the account settings.
Managing assistants
You can create up to 100 assistants per workspace. Each assistant is independent with its own knowledge base, conversations, and platform connection. Delete an assistant from its Settings page — this permanently removes all data associated with it.
Team access
Security
- All data is transmitted over HTTPS/TLS.
- API keys are stored as SHA-256 hashes — the raw key is never stored.
- WhatsApp credentials are encrypted at rest.
- Webhook deliveries are signed with HMAC-SHA256.
- Rate limiting and abuse detection protect against misuse.
Common issues
Messages not sending
- Check your credit balance.
- Verify your WhatsApp number is connected (green status in Settings).
- Check your WABA quality rating in Settings.
AI giving wrong answers
- Update your knowledge base with correct information.
- Check for conflicting information in different knowledge items.
Web widget not appearing
- Verify the embed code is placed before the closing body tag.
- Check for JavaScript errors in browser console.
- Ensure your site is not blocking third-party scripts.
WhatsApp connection problems
- Disconnected status: Your access token may have expired. Reconnect via Embedded Signup or regenerate your token in BYOK mode.
- Webhook not receiving messages: Verify the webhook URL in Meta Developer Console matches the URL shown in your 247Rep settings.
- Phone number in use error: The number may be registered on another WhatsApp app. Remove it from WhatsApp or WhatsApp Business first.
Message delivery failures
- 24-hour window closed: Use a template message to re-engage.
- Invalid phone number: Ensure the number is in E.164 format with country code.
- Quality rating too low: Improve your quality rating by reducing spam reports and opt-out rates.
- Messaging limit reached: Wait for your daily limit to reset or request a tier upgrade from Meta.
Contact support
Email: support@247rep.app
Response time: Within 24 hours on business days.
Include your workspace name and a description of the issue for the fastest response.
