Pola

TM

Pola

TM

Say Hello de

Insights

How We Use Payload CMS to Create Tailored Offers

June 04, 2025

|

Portrait of founder Julian Portrait of founder Julian

By Julian

|

10 min read

|

TL;DR

Offer Mockup Offer Mockup

Why We Decided to Build a Custom Offer Page

As a creative digital agency, we develop tailor-made solutions for our clients – and we wanted to apply the same standard to our internal processes.


Instead of relying on external tools, we decided to build a custom solution from the ground up.

Our goal: A website that presents our services with a unique, branded design – configurable, secure, and backed by clear internal workflows. At the same time, we wanted a system we could develop further ourselves, free from third-party dependencies.

A central aspect for us was having full control over our data. Proposals, invoices, brand sprints – we didn’t want to store any of it on proprietary SaaS platforms. Instead, we wanted an environment we own and operate ourselves.

We also needed a setup that could grow with us.
Many external tools eventually reach their limits – whether functionally, financially, or due to limited APIs. By building our own system with Payload CMS, we gained maximum flexibility: we can integrate new modules, adapt processes, and evolve the platform over time – exactly in line with the needs of our work.

Book a demo

Why Payload CMS?

We chose Payload CMS because it perfectly aligns with our tech stack and our philosophy:

  • Open source,
  • highly flexible,
  • developer-friendly.

Payload is written entirely in TypeScript and integrates seamlessly into custom projects. With Payload’s access control, we can precisely define who can view or edit what – whether it's role-based permissions within the team or restrictions around sensitive data. Using hooks, we implement custom logic directly in the CMS, such as automated emails, PDF generation, or Slack notifications.

Despite being headless, Payload offers a user-friendly admin UI that we can fully customize or extend as needed. This gives our team a simple interface without compromising on flexibility or control.

Payload Backend Mockup Payload Backend Mockup
Payload Backend Mockup Payload Backend Mockup

Payload Setup

Our proposal module in Payload is more than just a collection – it represents our entire offer process in technical form. Step by step:

1. Structure: All the fields a proposal needs

In the offers collection, we capture all relevant information: client, validity period, title, text modules, optional attachments, and terms & conditions.
The core, however, lies in the line items – divided into services and discounts. Each item can be, for example, hourly-based, flat-rate, or optional.
The structure is clearly organized into tabs and rows, making it much easier to work with in the admin UI. And if we ever need a special field or checkbox, it’s simple to add.

2. Automated totals & proposal numbers

To avoid manual calculations, a beforeChange hook automatically computes subtotals, taxes, and the grand total – including rounding and optional items. Discounts are correctly applied as well.
A second hook generates sequential proposal numbers based on a custom schema using the current year and existing entries. This keeps things organized and prevents duplicates.

3. Security and control with access rules

Using Payload’s access features, we define exactly who can read or edit which content:
In our case, only admins are allowed to create or delete proposals. Edits are only permitted while a proposal is still open – once accepted, all fields become read-only. This prevents accidental changes and maintains data integrity.

4. Extensions: From proposal to invoice

Thanks to custom UI components in Payload, we’ve added buttons like “Create Invoice” or “Create Down Payment Invoice” directly into the admin interface. Behind the scenes, logic handles the necessary links, field transfers, and validations.
We’ve also implemented custom endpoints – for example, to make a proposal externally accessible. This allows for seamless frontend integrations and automations (like Slack notifications or CRM syncing).

Offers Code Offers Code

Coming Soon: AI-Generated Offers

We’re currently working on an AI agent that can generate proposals autonomously. The idea: a colleague sends a voice message via WhatsApp – and based on existing proposals, project plans, and client data, the AI automatically creates a new proposal in the system.

This works especially well because:

  • all proposal data is stored in a structured format in Payload,
  • the AI can access existing content (e.g. similar past projects),
  • and once again, Payload handles permission control – defining exactly what the AI is allowed to create, modify, or view.

The goal is to further accelerate our internal workflows without compromising on quality or control.
The agent doesn’t work fully autonomously – instead, it acts as a smart assistant for the team: fast, transparent, and secure.

TL;DR

We use Payload CMS to manage all our proposals and invoices entirely in-house – with full control over data, access, and workflows.
Automatic proposal numbers, price calculations, custom permissions, and dedicated APIs make our system both flexible and future-proof.
We're currently developing an AI agent that will soon generate proposals automatically – triggered via WhatsApp and with clearly defined permissions in the CMS.

Book a demo

Curious?

Want to know how Payload CMS could work for your business?
Or are you looking for a custom solution for proposal creation and automation? Let’s talk!

Just drop us a message – we’re looking forward to hearing from you.

Sag Hallo