Skip to main content
Learn how to control delivery options, choose envelope sizes, and schedule mailings for future dates.

Postage Services

Intelliprint offers various UK Royal Mail services with different delivery speeds and features. The delivery times shown below are Royal Mail’s estimates from the point we hand mail over to them, not from the moment you submit a print job.

Available Services

ServiceDelivery TimeTrackingBest For
uk_second_class2-3 daysNoStandard mail (default)
uk_second_class_signed_for2-3 daysSignature onlyProof of delivery needed
uk_first_class1-2 daysNoFaster delivery
uk_first_class_signed_for1-2 daysSignature onlyFast + proof of delivery
uk_special_deliveryNext day by 1pm✅ YesUrgent mail
uk_special_delivery_9amNext day by 9am✅ YesMost urgent
tracked_24Next day✅ YesTracked delivery
tracked_482 days✅ YesTracked economical
internationalVariesNoOutside UK
Postcards can only use uk_second_class or uk_first_class services.
Royal Mail Signed For services (uk_second_class_signed_for, uk_first_class_signed_for) provide a delivery scan and signature as proof of delivery, but do not include full in-transit tracking.
For full tracking (multiple scan events during the journey), use uk_special_delivery, uk_special_delivery_9am, tracked_24 or tracked_48.

Choose a Postage Service

import Intelliprint from 'intelliprint';

const ip = Intelliprint('your-api-key-here');

const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Urgent Notice</h1>',
  recipients: [{address: {/* ... */}}],
  
  postage: {
    service: 'uk_first_class'  // Faster delivery
  },
  
  confirmed: true
});

Envelope Sizes

Intelliprint automatically selects the appropriate envelope based on your content, but you can specify a preferred size.

Available Envelope Sizes (Letters)

SizeDimensionsCapacityBest For
c5162 x 229mmUp to 30 sides (15 sheets folded A4)Standard letters (default)
c4229 x 324mmUp to 100 sides (50 sheets unfolded A4)Multi-page documents
c4_plus250 x 353mmUp to 500 sides (250 sheets A4)Large documents
a4_boxCustom boxUp to 3600 sides (1800 sheets A4)Very large mailings

Available Postcard Sizes

SizeDimensionsBest For
postcard_a6105 x 148mmStandard postcards (default)
postcard_a5148 x 210mmLarger postcards
postcard_a5_enveloped148 x 210mmA5 in envelope

Specify Envelope Size

const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Multi-page Document</h1>',
  recipients: [{address: {/* ... */}}],
  
  postage: {
    service: 'uk_first_class',
    ideal_envelope: 'c4'  // Prefer larger envelope
  },
  
  confirmed: true
});
Intelliprint may upgrade to a larger envelope if your content doesn’t fit the specified size. The actual envelope used is returned in the letters[].envelope field.

Schedule for Future Delivery

Schedule your mailing to be printed and shipped on a specific date:
// Calculate future date (7 days from now)
const futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
const timestamp = Math.floor(futureDate.getTime() / 1000);

const printJob = await ip.prints.create({
  testmode: true,
  content: '<h1>Scheduled Campaign</h1>',
  recipients: [{address: {/* ... */}}],
  
  postage: {
    service: 'uk_first_class',
    mail_date: timestamp  // UNIX timestamp (day-adjusted)
  },
  
  confirmed: true
});

console.log('Scheduled for:', new Date(timestamp * 1000).toLocaleDateString());
Important: mail_date is when Intelliprint will print and ship your mailing (handover to Royal Mail), not when it arrives at the recipient. Add the postage service delivery time on top of this to calculate the expected arrival date.

Same-Day Dispatch

Print jobs confirmed before 3pm UK time are placed into production immediately and we aim to print and hand them over to Royal Mail on the same business day.
// Confirmed at 2:00pm UK time → Printed and sent today
await ip.prints.create({
  content: '<h1>Urgent Letter</h1>',
  recipients: [{address: {/* ... */}}],
  postage: { service: 'uk_first_class' },
  confirmed: true  // Before 3pm = same-day dispatch
});
Tip: For time-sensitive mailings, confirm before 3pm UK time (GMT/BST) so we can hand mail to Royal Mail the same day, then choose a faster postage service (for example, First Class or Special Delivery) for the shortest end-to-end delivery time.

Tracking Numbers

Tracked services provide Royal Mail tracking numbers:
const printJob = await ip.prints.create({
  testmode: false,  // Tracking only available in live mode
  content: '<h1>Tracked Letter</h1>',
  recipients: [{address: {/* ... */}}],
  
  postage: {
    service: 'uk_first_class_signed_for'  // Tracked service
  },
  
  confirmed: true
});

// Check status later
const updated = await ip.prints.retrieve(printJob.id);
const trackingNumber = updated.letters[0].tracking_number;

if (trackingNumber) {
  console.log('Tracking:', trackingNumber);
  console.log('Track at: https://www.royalmail.com/track-your-item');
}
Tracking numbers are generated once the mail is shipped. Check the letters[].status field - tracking numbers appear when status is shipping or later.

Real-World Examples

Example 1: Time-Sensitive Campaign

async function sendBlackFridayCampaign() {
  // Schedule for day before Black Friday
  const blackFriday = new Date('2024-11-29');
  const sendDate = new Date(blackFriday);
  sendDate.setDate(sendDate.getDate() - 3); // 3 days before for delivery
  
  const printJob = await ip.prints.create({
    testmode: false,
    content: '<h1>Black Friday Preview!</h1>',
    mailing_list: 'mal_black_friday_2024',
    
    postage: {
      service: 'uk_first_class',  // Fast delivery
      mail_date: Math.floor(sendDate.getTime() / 1000)
    },
    
    background: {
      first_page: 'bg_black_friday'
    },
    
    confirmed: true
  });
  
  console.log(`Campaign scheduled for ${sendDate.toDateString()}`);
  console.log(`Expected delivery: ${blackFriday.toDateString()}`);
  
  return printJob;
}
async function sendLegalNotice(recipient) {
  const printJob = await ip.prints.create({
    testmode: false,
    
    file: fs.createReadStream('./legal-notice.pdf'),
    recipients: [{address: recipient.address}],
    
    postage: {
      service: 'uk_special_delivery',  // Tracked + fast
      ideal_envelope: 'c4'
    },
    
    background: {
      first_page: 'bg_legal_letterhead'
    },
    
    extra_documents: [{
      document: fs.createReadStream('./terms.pdf')
    }],
    
    reference: `Legal Notice ${recipient.case_number}`,
    confirmed: true
  });
  
  // Store tracking number for records
  console.log('Print job:', printJob.id);
  console.log('Check tracking later for proof of delivery');
  
  return printJob;
}

Example 3: Abandoned Basket Postcard Campaign

async function scheduleAbandonedBasketPostcards(customers) {
  const printJobs = [];
  
  for (const customer of customers) {
    // Schedule to arrive a few days after abandonment
    const abandonedAt = new Date(customer.basket_abandoned_at);
    const sendDate = new Date(abandonedAt);
    sendDate.setDate(sendDate.getDate() + 3); // Send 3 days later
    
    const printJob = await ip.prints.create({
      testmode: false,
      type: 'postcard',  // Send as postcard (perfect for re-engagement)
      
      content: `
        <h1>Still thinking it over, ${customer.first_name}?</h1>
        <p>You left items in your basket – complete your order for fast delivery.</p>
      `,
      
      recipients: [{address: customer.address}],
      
      postage: {
        service: 'uk_first_class',
        mail_date: Math.floor(sendDate.getTime() / 1000),
        ideal_envelope: 'postcard_a5'  // Larger postcard
      },
      
      reference: `Abandoned basket ${customer.id}`,
      confirmed: true
    });
    
    printJobs.push(printJob);
  }
  
  console.log(`Scheduled ${printJobs.length} abandoned basket postcards`);
  return printJobs;
}

Cost Considerations

Postage service affects your total cost:
// Cost increases with faster/tracked services
const economy = { service: 'uk_second_class' };        // Lowest cost
const standard = { service: 'uk_first_class' };        // Moderate cost
const premium = { service: 'uk_special_delivery' };    // Higher cost
Use testmode: true to see exact costs for different postage options before committing.Learn more about costs →

Best Practices

  • Confirm before 3pm UK time for same-day printing and handover to Royal Mail
  • Jobs confirmed after 3pm are processed and handed over on the next business day
  • Combine with First Class or Special Delivery for fastest arrival
  • Consider UK time zone (GMT/BST) when automating confirmations
  • Schedule at least 24 hours in advance
  • Account for delivery time when scheduling
  • UK First Class typically delivers in 1-2 days
  • Add buffer time for important dates
  • Standard mail: Use uk_second_class for cost savings
  • Important documents: Use tracked services for proof of delivery
  • Urgent: Use uk_special_delivery when time-critical
  • International: Use international service for overseas
For tracked services:
  • Store print job IDs in your database
  • Poll the API to get tracking numbers
  • Monitor delivery status
  • Keep records for compliance
  • Test with actual content to verify envelope choice
  • Large documents may auto-upgrade to bigger envelopes
  • Verify costs with test print jobs first

Next Steps