Dashboard Overview
Sales by Product
Revenue Split
Orders Management
| Order ID | Customer | Product | Amount | Status | Date | Actions | |
|---|---|---|---|---|---|---|---|
| Loading orders... | |||||||
Revenue Analytics
Revenue Over Time
Units Sold
Product Breakdown
| Product | Units Sold | Price | Gross Revenue | % of Total |
|---|---|---|---|---|
| Loading... | ||||
Affiliates Program
| Affiliate | Ref Code | Status | Clicks | Sales | Earned | Paid | Balance | Actions | |
|---|---|---|---|---|---|---|---|---|---|
| Loading affiliates... | |||||||||
Commissions Payouts
| Commission ID | Affiliate | Ref Code | Customer | Sale | Commission | Status | Earned | Actions |
|---|---|---|---|---|---|---|---|---|
| Loading commissions... | ||||||||
Subscribers Mailing List
| Name | Source | Subscribed | Actions | |
|---|---|---|---|---|
| Loading subscribers... | ||||
Inquiries Inbox
| Name | Organization | Type | Message Preview | Date | Actions | |
|---|---|---|---|---|---|---|
| Loading inquiries... | ||||||
Settings Configuration
How to Log a SendOwl Sale Right Now
- Go to the Orders tab in this dashboard.
- Click "+ Add SendOwl Order" (top right of the Orders tab).
- Open your SendOwl Dashboard → Orders and find the completed sale.
- Copy the buyer's name, email, product, amount and date into the form.
- Click Save Order — it will appear immediately with status Completed.
Future: Enable Automatic Order Sync (Webhook)
SendOwl can automatically POST order data to a URL every time a purchase is made. To enable this you need a Netlify Function (free) that receives the webhook and writes to the orders table.
- In SendOwl Dashboard → Settings → Notifications, look for HTTP Notifications / Webhooks.
- Set the Notification URL to:
https://www.wisdomspeeksmusic.com/.netlify/functions/sendowl-webhook - Create a file
netlify/functions/sendowl-webhook.jsin your Netlify repo — ask your developer or use the template below. - Redeploy to Netlify — from that point, every SendOwl sale auto-logs to this dashboard.
exports.handler = async (event) => {
if (event.httpMethod !== 'POST') return { statusCode: 405 };
try {
const data = JSON.parse(event.body || '{}');
const order = data.order || data;
const payload = {
customer_name: order.buyer_name || order.name || 'SendOwl Buyer',
customer_email: order.buyer_email || order.email || '',
product_type: detectType(order.product_name || ''),
product_name: order.product_name || 'GET TO IT',
amount: parseFloat(order.order_total || order.amount || 0),
currency: 'USD',
status: 'completed',
order_date: new Date().toISOString(),
sendowl_order_id: String(order.id || order.order_id || ''),
};
const API = process.env.TABLE_API_BASE || 'https://www.wisdomspeeksmusic.com';
await fetch(`${API}/tables/orders`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
return { statusCode: 200, body: 'ok' };
} catch(e) {
return { statusCode: 500, body: e.message };
}
};
function detectType(name) {
const n = name.toLowerCase();
if (n.includes('bundle')) return 'bundle';
if (n.includes('wav')) return 'wav';
return 'mp3';
}
Configured SendOwl Product IDs
7944585179446049872453Zap 1 — SendOwl → Admin Dashboard (Orders Table)
In Zapier: Trigger = SendOwl "New Order" → Action = Webhooks by Zapier "POST" → URL below.
https://www.wisdomspeeksmusic.com/tables/orders
Payload Type: json |
Required fields: customer_name, customer_email, amount, status
Zap 2 — SendOwl → Mailchimp
In Zapier: Trigger = SendOwl "New Order" → Action = Mailchimp "Add/Update Subscriber".
Map: buyer_email → Email, buyer_name → First Name, Status = subscribed.
Zap 3 — Approved Commission → PayPal Payout
Requires Zapier paid plan (~$19.99/mo). Trigger = Webhooks "Catch Hook" → Filter status = approved → PayPal "Send Payout".
Map: affiliate_paypal_email → Recipient, commission_amount → Amount.