Account Linking
Connect your messaging identity to your Commerce Index merchant account using a simple OTP-based verification flow. Works on any connected messaging platform.
How It Works
Send the Link Command
In any connected messaging channel (Telegram, WhatsApp, Slack, or iMessage), sendlink yourdomain.com where yourdomain.com is the domain associated with your Commerce Index merchant account.
Receive the OTP via Email
Commerce Index generates a 6-digit one-time password and sends it to the admin email address registered for that domain. Check your inbox (and spam folder) for an email from noreply@commerceindex.com.
Enter the OTP in Chat
Type the 6-digit code directly in the same chat where you sent the link command. No prefix needed — just the code. For example: 847291.
Account Linked
Once verified, your messaging identity is permanently connected to your merchant account. You can now use all CI commands from this messaging platform. The link persists across sessions — you will not need to re-link unless you explicitly unlink.
Conversation Flow
Security
OTP Expiry
Verification codes expire after 10 minutes. After expiry, you must start the linking process again with a new link command.
Rate Limited
Maximum 3 verification attempts per OTP. After 3 failed attempts, the code is invalidated and you must request a new one. Limit of 5 link requests per hour per messaging identity.
Multi-User Support
Multiple team members can link their own messaging accounts to the same merchant account. Each person links independently using their own messaging identity. All linked users share the same merchant data but maintain individual notification preferences.
Multi-Platform
One merchant account can be linked to multiple messaging platforms simultaneously. Link from Telegram, WhatsApp, Slack, and iMessage — all will have access to the same data and commands. Cross-platform threads sync automatically.
Technical Details
# Account linking API flow (internal)
# Step 1: User sends "link mystore.com"
# CI resolves the domain to a merchant_id
POST /api/v1/auth/link/initiate
{
"platform": "telegram",
"platform_user_id": "tg_123456789",
"domain": "mystore.com"
}
# Response: { "status": "otp_sent", "email_hint": "a***@mystore.com", "expires_in": 600 }
# Step 2: User enters OTP
POST /api/v1/auth/link/verify
{
"platform": "telegram",
"platform_user_id": "tg_123456789",
"domain": "mystore.com",
"otp": "847291"
}
# Response: { "status": "linked", "merchant_id": "merch_abc123", "user_role": "admin" }
# Unlinking
POST /api/v1/auth/link/revoke
{
"platform": "telegram",
"platform_user_id": "tg_123456789"
}
# Response: { "status": "unlinked" }