Pointify

Partner brand kit

Co-branding with Pointify

Everything you need to set up a white-labelled portal: wordmark assets, the "Powered by" badge, color tokens, and the do/don't rules that keep both brands looking sharp.

Logo + badge files

Files live under /brand/* on this domain. Right-click → Save As, or fetch with curl. Don't recolor or rotate the wordmark.

Pointify wordmark — light variant

For dark partner backgrounds. SVG with no transparency tricks; renders cleanly at every size.

SVG · 240×72 base, scales to any size · #FFFFFF on transparent
Download →

Pointify wordmark — dark variant

For light partner backgrounds. Same shape as the light variant, color-flipped.

SVG · 240×72 · #0D0D0E on transparent
Download →

"Powered by Pointify" badge

Drop into your footer. Required for Starter + Growth tiers; optional for Enterprise.

SVG · 160×24 · light + dark variants in one file
Download →

Pointify icon mark

For favicons, partner-app store badges, or anywhere you need a square 1:1 mark.

PNG @ 512px + SVG · square · transparent
Download →

Don't see a format you need (PSD, AI, EPS)? partners@pointifytravels.com and we'll send the source files.

Brand colors

Pointify Orange
#E35F22

Primary action color. Reserved for the Pointify wordmark and the "Powered by Pointify" badge.

Pointify Black
#0D0D0E

Wordmark dark variant. Don't use as a partner accent color — it's a Pointify identity color.

Surface gray
#F5F5F5

Light-mode card surface that pairs with the wordmark dark variant.

Co-branding do's and don'ts

Do

Footer line: "Powered by Pointify"

All Starter + Growth-tier portals must show the wordmark + "Powered by Pointify" line in the footer. Use the badge SVG to keep alignment + spacing right.

Don't

Recolor the wordmark

The Pointify wordmark stays in either the orange variant on white, or the black variant on light. Don't tint it to match partner brand colors — it stops being recognizable.

Do

Use your color as `--primary`

The white-label theming engine swaps Tailwind's `--primary` token to your hex. Anything that uses `bg-primary` / `text-primary` already inherits — no per-component overrides needed.

Don't

Imply Pointify endorsement of third-party products

Don't write "Pointify recommends" or "Pointify-approved" in your customer-facing copy unless we've explicitly co-signed the campaign with you.

Do

Co-mention Pointify in transactional emails

The single line "Booking processed by Pointify, your travel management partner" goes in the email footer. Customers want to know the chain of trust if a refund issue comes up.

Don't

Hide the wordmark below the fold

The badge needs to be visible at footer-fold height. Burying it below 8 sections of "Why us" copy violates the partnership terms.

Webhook signature reference

Pointify signs every outbound webhook with HMAC-SHA256. Verify the Pointify-Signature header on your receiver before trusting the payload — otherwise a spoofed request could fake a booking event.

verify.ts
import { createHmac, timingSafeEqual } from 'node:crypto';

export function verifyPointifySignature(
  rawBody: string,
  signatureHeader: string,
  secret: string,
  toleranceSeconds = 300,
): boolean {
  // Header shape: "t=<unix>,v1=<hex>"
  const parts = Object.fromEntries(
    signatureHeader.split(',').map((p) => p.split('=', 2)),
  );
  const t = Number(parts.t);
  const v1 = parts.v1;
  if (!Number.isFinite(t) || !v1) return false;

  // Reject anything older than `toleranceSeconds` to prevent replay.
  if (Math.abs(Math.floor(Date.now() / 1000) - t) > toleranceSeconds) {
    return false;
  }

  const expected = createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest();
  const provided = Buffer.from(v1, 'hex');
  return provided.length === expected.length && timingSafeEqual(provided, expected);
}

Ready to find your best fare?

Join travel professionals who never overpay for flights. Free account in 30 seconds.

Create Free Account