A generalist CRM knows what a deal is. It does not know what an allotment, a release, an agency code, a settled commission or a room night are, all of that has to be built. GuestMaker starts from the other end: the reservations, the contacts, the hotels, the rates and the consent are already inside. The B2B module adds the only things missing: accounts, pipeline, proposals and commissions.
Continental Corporate, Madrid corporate rate has no promo code, no accepted terms and 33 days of silence. The server refuses the move and names what is missing.
That stage is approval-gated to Rubén Calbet. Request it, or release it as him and watch the card move.
Stage rail, gate fields you can actually fill, notes with mentions, the one-to-one composer, the proposal state and the full stage history.
Groups & Events is the same board over a different data model: event dates and pax instead of rate type and room nights.
This is the part a generalist CRM solves with validation rules an administrator has to write, test and maintain. Here it is field gates per stage boundary and named approvals per stage, and between them they cover the real case: the price does not move until the right person approves it.
Every time a deal crosses a stage category forward, the server checks the fields that category requires. All crossed categories are checked, not just the origin, so a jump that leaps over a blocked stage does not evade it. Winning a corporate deal needs the booking-engine promo code and accepted payment terms; winning a group needs the PMS locator and a signed proposal.
Any stage can be marked as requiring approval, with the people authorised to release it. Requests, releases and refusals are logged. Moving backwards and marking a deal lost never require approval. A client accepting a proposal never crosses a gated stage either. The system warns the team and leaves the deal where it was.
Two native flows, gates and approvals on the boundaries, a four-priority attribution engine, a commission ledger that accrues itself, account hierarchies with inherited terms, hosted proposals signed in the browser, and a public API for the rest of the group's systems.
Corporate / FIT prices negotiated rates against a room-night commitment, an ADR and an allotment with a release window. Groups & Events prices event dates, pax, meeting space and board. Same board, different data model, and different gates.
Every time a deal crosses a stage category forward, the server checks the fields that category demands. Not a client-side hint. The move is refused and the card stays where it was, with the missing fields named.
Any stage can require approval, with named people authorised to release it. Skipping over a gated stage does not evade it. Going backwards and marking a deal lost never need approval. The control sits where the commercial risk is.
Each stage carries its own idle threshold, 14 days in qualification, 21 in proposal, 30 in negotiation by default. Any logged activity resets the clock. The card shows days in stage and whether a next action exists at all.
Reservations arrive from the PMS, the booking engine and the channel manager and are matched to the account that produced them: agency code, promo or rate code, engine agency id, and email domain as a suggestion only.
When an attributed reservation checks out and a commission rate applies, one ledger entry is written, one, even if the job runs twice. Accrued, invoiced, settled: forward only, cancellable from the first two states.
Accounts nest up to three levels. Production consolidates upwards with a single toggle, and commercial terms are inherited from the nearest ancestor that has them. Configure the master agreement once; each national subsidiary follows.
A hosted, group-branded document with view tracking, handwritten acceptance and an identical PDF from the same template. The sales rep edits on top of the finished document, not in a form.
Mark the target languages and a full variant of the proposal is generated for each: content, headings, labels, the signature form, the acceptance notice, dates and currency format. The language the client signed in is recorded.
Connected mailboxes sync both ways. Per mailbox, group and MICE enquiries can be routed to the B2B CRM: classified, structured, dates, alternatives, rooms, pax, event type, board, contact, and turned into a draft deal for review.
A B2B contact is a row of the same contacts table with type = b2b. Inbox, segments, campaigns, custom fields and consent all keep working, and a person can be an agency buyer and a returning guest without two records to reconcile.
Each user gets both CRMs, guest-only or B2B-only. Seven granular permissions per role. Switch the group to own-portfolio mode and a rep sees their accounts, their deals and the unassigned pool, enforced in the server, not hidden in the UI.
Each account holds the commercial (commission, settlement, credit limit, payment days, cancellation policy), the contractual (dates and renewal warning), the identifying (tax ID, IATA, channel-manager code, CRS code, engine id) and the operational (room-night commitment, promo codes, email domains). Open any row: eight tabs, with real attributed production and a filterable commission ledger.
An agency buyer is not a new object. It is a platform contact with a B2B type. That single design decision is what avoids the classic problem of two records for one person that somebody has to keep in sync.
Four views inside the pipeline page, pipeline health, forecast, team activity and real attributed production, filterable by period, pipeline and owner. Revenue, room nights, ADR and commission cost are not typed in by a sales rep: they are the hotel's own reservations, matched to the account that produced them, in the same database.
Pick one of the group's templates, and content, colours, fonts and layout arrive together. Merge fields stay dynamic inside every saved block, so a cover note written once fills itself for the next account. Design controls apply to the document as you touch them. This editor below is real: change the palette, swap the headline font, reorder or remove sections, open the content library, insert a merge field, then hit Preview filled to see the deal's own data resolve.
Library → Templates → Apply. Corporate, congress, leisure series or incentive: content, palette and headline font change together.
Palette swatches, 38-font pickers, type size, hero height and tint, inclusion columns, bands, corners, spacing, page width.
Insert field → any token. It lands in the cover note and stays dynamic; Preview filled resolves it against this deal.
Save the proposal as a group template, or the cover note, inclusions, terms and room cards as reusable blocks.
Mark the target languages and a full variant is generated for each, content, headings, labels, signature form, dates and currency format. The language the client signed in is recorded.
The group decides: notify the team only, or also move the deal to a specific stage. Mandatory signature can be enforced group-wide.
If auto-advance would have to cross an approval-gated stage, it does not. It warns and leaves the deal where it was.
Reservations arrive from the PMS, the booking engine and the channel manager and are matched on four priorities. The highest wins, ties never auto-link, and a manual attribution is never overwritten. Outwards, accounts, contacts and deals read and write over a versioned public API with b2b:read and b2b:write scopes.
If the module is not active for the group these routes answer with an explicit error. The only public route family with that protection, precisely because it is a separate module.
All five can also fire automated journeys: deal created, stage changed, won, lost, renewal approaching, allotment reached and activity overdue are events in the same journey builder the group already uses.
Call, email, property visit, virtual meeting, business lunch, proposal prep, credit review, contract signature, task and note. Each anchored to an account, a deal, a contact, or several at once.
An @ in a note opens the colleague picker. The person mentioned gets an email. Pinned notes rise to the top of the timeline.
Logging or completing an activity updates last-activity on the deal, resetting the rotting clock and satisfying the negotiation gate.
A loose activity, an inbound call, an email request, becomes a deal without re-typing the data.
Row-level security on every table of the module, plus explicit group filtering in each service query. Two independent layers that would have to fail together.
Contracts and proposals live in private storage with a file-type allow list. Downloads use short-lived signed links, never direct paths.
The client proposal is served under a strict content policy. The only script allowed to run is the signature pad, authorised with a fresh nonce per request.
Every proposal has a random address, and the acceptance link is cryptographically signed and issued at send time. Without that token, acceptance is refused.
Creations, edits, stage moves, sends and exports are written with user and timestamp, readable from Settings and Privacy.
Historical attribution on activation runs in a batched queue with retries, never inside a web request. Replaying a batch is safe by design.
Don’t see yours? Bring it to the demo and we’ll answer it live.
No. It is the same platform with a B2B module switched on. An agency buyer is a platform contact with a B2B type, not a second object, so they appear in the inbox, in segments and in campaigns with nothing duplicated and nothing to keep in sync. The reservations, hotels, rates and consent the B2C side already holds are the same records the B2B side reads.
On four criteria, in priority order: the booking-engine promo code, the agency or channel-manager code, the CRS or engine identifier, and the email domain of the booker. The highest priority wins. A tie between several accounts never links itself. It becomes a suggestion for someone to resolve. An attribution made by hand is never overwritten automatically.
Two mechanisms, both configured in the interface and both enforced on the server. Field gates check the fields a stage category requires every time a deal crosses forward, and all crossed categories are checked, so a jump that leaps over a blocked stage does not evade it. Named approvals mark any stage as requiring release by specific people. Moving backwards and marking a deal lost never require approval.
The group decides: notify the team only, or also advance to a specific stage. If that auto-advance would have to cross an approval-gated stage, it does not. It warns the team and leaves the deal where it was. A signature never jumps a gate.
A ledger with the full cycle: accrued, invoiced, settled. The rate is inherited from the parent account unless the child holds its own, one entry per reservation with no duplicates, and the base is whatever the attributed reservation actually billed. It is filterable and exportable, and every export is recorded against the person who ran it.
A family can run three levels deep, a group over its country entities for instance. Conditions are inherited per field: a new child inherits the parent's terms, while an existing account that moves into a family freezes the terms it already had. Any tab can be rolled up across the family or read for one account alone.
A hosted page in the group's brand, not a PDF attachment, tracked, signed in the browser, with an identical PDF available. Up to twelve language variants are generated automatically, one per recipient, including headings, labels, the signature form and date and currency formats. The language the client signed in is recorded.
Yes, over the versioned public API with b2b:read and b2b:write scopes covering accounts, contacts and deals. If the module is not active for the group those routes answer with an explicit error rather than a silent empty result. The only public route family with that protection, precisely because it is a separate module.
Per group, and off by default. Activation creates the two pipelines, their ten stages with probabilities and thresholds, and the B2B contact segment. Switching it off hides the interface and never deletes data.
Thirty minutes. We take one real account of yours, attribute its reservations on the four criteria, accrue the commission it earned, and build the proposal you would have sent it, end to end, on your own data.