Simple SMS rewards for small businesses — no apps, no fuss.
Customer enters their phone number at checkout. No app downloads required.
They receive an SMS instantly with their progress and jackpot entry confirmation.
Get reward codes via SMS plus automatic entry into monthly prize draws.
Simple dashboard that any business owner can master in minutes. Track stamps, send rewards, and watch your customer retention soar.
Comprehensive loyalty management with enterprise-grade features designed for growing businesses.
SMS loyalty tracking with instant updates — customers just need their phone number.
StarterContactless stamping via QR codes for faster customer experiences.
StarterSet multiple reward levels like "5 stamps = free coffee" and "10 stamps = free lunch".
StandardEvery stamp earns a chance to win monthly national prizes and gift cards.
StandardSend marketing texts, birthday offers, and time-sensitive deals to customers.
StandardTrack reward claims, customer visits, and campaign results in real-time.
ProIntegrate TextStamps into your existing systems with our simple REST API. Create stamps, manage customers, and track rewards programmatically.
curl -X POST \
https://api.textstamps.com/v1/stamps \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"customer_phone": "+1234567890",
"business_id": "your_business_id",
"location_id": "main_store",
"stamp_count": 1
}'
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
data := map[string]interface{}{
"customer_phone": "+1234567890",
"business_id": "your_business_id",
"location_id": "main_store",
"stamp_count": 1,
}
jsonData, _ := json.Marshal(data)
req, _ := http.NewRequest("POST",
"https://api.textstamps.com/v1/stamps",
bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <YOUR_API_KEY>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
import fetch from "node-fetch";
const response = await fetch("https://api.textstamps.com/v1/stamps", {
method: "POST",
headers: {
"Authorization": "Bearer <YOUR_API_KEY>",
"Content-Type": "application/json"
},
body: JSON.stringify({
customer_phone: "+1234567890",
business_id: "your_business_id",
location_id: "main_store",
stamp_count: 1
})
});
const data = await response.json();
console.log(data);
<?php
$ch = curl_init("https://api.textstamps.com/v1/stamps");
$data = json_encode([
"customer_phone" => "+1234567890",
"business_id" => "your_business_id",
"location_id" => "main_store",
"stamp_count" => 1
]);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("TEXTSTAMPS_API_KEY"),
"Content-Type: application/json"
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
import requests
import os
url = "https://api.textstamps.com/v1/stamps"
headers = {
"Authorization": f"Bearer {os.getenv('TEXTSTAMPS_API_KEY')}",
"Content-Type": "application/json"
}
data = {
"customer_phone": "+1234567890",
"business_id": "your_business_id",
"location_id": "main_store",
"stamp_count": 1
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
import React, { useState } from 'react';
const StampButton = () => {
const [message, setMessage] = useState('');
const addStamp = async () => {
try {
const response = await fetch('https://api.textstamps.com/v1/stamps', {
method: 'POST',
headers: {
'Authorization': 'Bearer <YOUR_API_KEY>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
customer_phone: '+1234567890',
business_id: 'your_business_id',
location_id: 'main_store',
stamp_count: 1,
}),
});
const data = await response.json();
if (data.success) {
setMessage(data.message_sent);
}
} catch (error) {
console.error('Error adding stamp:', error);
}
};
return (
<div>
<button onClick={addStamp}>Add Stamp</button>
{message && <p>{message}</p>}
</div>
);
};
Simple HTTP endpoints with JSON responses. Easy to integrate with any programming language.
API key authentication with rate limiting and request validation for enterprise security.
Track API usage, customer engagement, and stamp distribution in real-time.
Perfect for testing the platform before scaling up.
"My customers love it. It paid for itself in a week. No more lost punch cards or forgotten apps."
"The jackpot feature is genius. Customers are more excited about earning stamps than ever before."
"Setup took 5 minutes. My repeat customers increased by 40% in the first month."
Join thousands of businesses already using TextStamps to build customer loyalty without the complexity.