Understanding QueueSaaS Pricing - QueueSaaS Blog
Relay
QueueSaaS Team

Understanding QueueSaaS Pricing

Learn about QueueSaaS pricing plans, usage limits, and how to choose the right plan for your needs. Understand pay-as-you-go pricing and cost optimization.

pricing billing plans guide

Understanding QueueSaaS Pricing

QueueSaaS offers flexible pricing plans designed to scale with your needs. Whether you’re just getting started or running a high-volume production system, we have a plan that fits. This guide will help you understand our pricing structure and choose the right plan.

Pricing Plans

Free Plan

Perfect for: Testing, prototypes, and small projects

Price: $0/month

Limits:

  • 1,000 messages per day
  • 30,000 messages per month
  • 50 GB monthly bandwidth
  • 3 retries per message
  • 1 MB max message size
  • 15-minute HTTP timeout

Features:

  • ✅ Message deduplication
  • ✅ Basic analytics
  • ❌ Custom headers
  • ❌ URL Groups
  • ❌ CRON scheduling
  • ❌ Success/failure callbacks

Pay as You Go

Perfect for: Growing teams and production applications

Price: $1 per 100,000 messages (no base fee)

Limits:

  • Unlimited messages per day
  • Unlimited messages per month
  • 50 GB monthly bandwidth
  • 5 retries per message
  • 10 MB max message size
  • 2-hour HTTP timeout

Features:

  • ✅ All Free plan features
  • ✅ Full analytics
  • ✅ Custom headers
  • ✅ URL Groups (fan-out messaging)
  • ✅ CRON scheduling
  • ✅ Success/failure callbacks

Enterprise

Perfect for: Large organizations with custom needs

Price: Custom pricing (contact sales)

Limits:

  • Unlimited everything
  • Unlimited bandwidth
  • 10 retries per message
  • 100 MB max message size
  • 24-hour HTTP timeout

Features:

  • ✅ All features
  • ✅ Priority support
  • ✅ Custom SLAs
  • ✅ Dedicated infrastructure (optional)

Understanding Usage

What Counts as a Message?

A message is counted when you publish it to QueueSaaS, regardless of:

  • Whether it’s delivered successfully
  • How many retries it takes
  • The message size (within limits)

Bandwidth Calculation

Bandwidth is calculated based on:

  • Request body size
  • Response body size (if callbacks are enabled)
  • Headers (minimal)

Rate Limits

Each plan has different rate limits:

Free Plan:

  • 60 requests/minute
  • 1,000 requests/hour

Pay as You Go:

  • 1,000 requests/minute
  • 50,000 requests/hour

Enterprise:

  • Unlimited

Cost Examples

Example 1: Small Startup

Usage:

  • 5,000 messages/day
  • 150,000 messages/month

Cost on Pay as You Go:

  • 150,000 messages ÷ 100,000 = 1.5 units
  • Cost: 1.5 × $1 = $1.50/month

Example 2: Growing SaaS

Usage:

  • 50,000 messages/day
  • 1,500,000 messages/month

Cost on Pay as You Go:

  • 1,500,000 messages ÷ 100,000 = 15 units
  • Cost: 15 × $1 = $15/month

Example 3: High-Volume Application

Usage:

  • 500,000 messages/day
  • 15,000,000 messages/month

Cost on Pay as You Go:

  • 15,000,000 messages ÷ 100,000 = 150 units
  • Cost: 150 × $1 = $150/month

Cost Optimization Tips

1. Use Message Deduplication

Prevent duplicate messages from being processed:

await client.messages.publish({
  url: 'https://api.example.com/webhook',
  body: { event: 'user.created', userId: '123' },
  deduplicationId: `user-created-123`, // Prevents duplicates
});

2. Batch Messages When Possible

Instead of sending individual messages, batch them:

// ❌ Inefficient: 10 API calls
for (const user of users) {
  await client.messages.publish({ /* ... */ });
}

// ✅ Efficient: 1 API call with batch
await client.messages.publishBatch(
  users.map(user => ({
    url: 'https://api.example.com/webhook',
    body: { event: 'user.created', userId: user.id },
  }))
);

3. Optimize Message Size

Keep messages small - only include necessary data:

// ❌ Large message
await client.messages.publish({
  body: {
    userId: '123',
    fullUserObject: { /* 50KB of data */ },
    relatedData: { /* more data */ },
  },
});

// ✅ Optimized message
await client.messages.publish({
  body: {
    userId: '123',
    // Store full data in database, reference it in message
  },
});

4. Use Appropriate Retry Counts

Don’t set retry counts higher than necessary:

// For critical messages
await client.messages.publish({
  url: 'https://critical-service.com/webhook',
  retries: 5, // Pay as You Go max
});

// For non-critical messages
await client.messages.publish({
  url: 'https://optional-service.com/webhook',
  retries: 2, // Fewer retries = fewer attempts = lower cost
});

Monitoring Your Usage

Check Current Usage

const usage = await client.billing.getUsage();

console.log('Current Usage:', {
  messagesToday: usage.data.usage.messagesToday,
  messagesThisMonth: usage.data.usage.messagesThisMonth,
  remaining: usage.data.remaining,
});

Estimate Monthly Cost

const estimate = await client.billing.getCostEstimate();

console.log('Estimated Cost:', {
  messagesUsed: estimate.data.currentMonth.messagesUsed,
  estimatedCost: `$${estimate.data.currentMonth.estimatedCost}`,
  perMessageRate: `$${estimate.data.breakdown.perMessageRate}`,
});

Set Up Usage Alerts

await client.notifications.updatePreferences({
  quotaAlertThresholds: [50, 75, 90, 100],
  emailRecipients: ['billing@example.com'],
});

When to Upgrade

Upgrade from Free to Pay as You Go When:

  • You exceed 1,000 messages/day
  • You need CRON scheduling
  • You need URL Groups
  • You need custom headers
  • You need longer timeouts

Upgrade to Enterprise When:

  • You need > 10 MB message size
  • You need > 2-hour timeouts
  • You need > 5 retries
  • You need priority support
  • You need custom SLAs

Billing FAQ

How is billing calculated?

Billing is calculated based on the number of messages published, regardless of delivery status. You’re charged at the end of each month.

What happens if I exceed my plan limits?

Free plan: Messages will be rejected with a 429 status code. You’ll need to upgrade to continue.

Pay as You Go: No hard limits - you pay for what you use.

Can I change plans mid-month?

Yes! Plan changes take effect immediately. You’ll be charged prorated amounts.

Do retries count as additional messages?

No. Retries are included in the original message cost.

Is there a minimum charge?

No. Pay as You Go has no minimum charge. You only pay for what you use.

Next Steps

Choose the plan that fits your needs and scale as you grow! 💰