https://github.com/rubix-studios-pty-ltd/payload-dub
A Payload CMS plugin that uses Dub to auto-create and manage shortlinks for published documents.
https://github.com/rubix-studios-pty-ltd/payload-dub
dub payload payload-plugin payloadcms payloadcms-3 payloadcms-v3 plugin shortlink shortlinks typescript
Last synced: about 2 months ago
JSON representation
A Payload CMS plugin that uses Dub to auto-create and manage shortlinks for published documents.
- Host: GitHub
- URL: https://github.com/rubix-studios-pty-ltd/payload-dub
- Owner: rubix-studios-pty-ltd
- License: mit
- Created: 2025-10-17T08:57:27.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-04-06T00:50:36.000Z (2 months ago)
- Last Synced: 2026-04-06T02:32:04.860Z (2 months ago)
- Topics: dub, payload, payload-plugin, payloadcms, payloadcms-3, payloadcms-v3, plugin, shortlink, shortlinks, typescript
- Language: TypeScript
- Homepage: https://rubixstudios.com.au/
- Size: 1.1 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# PayloadCMS + Dub Plugin
A Payload CMS plugin that integrates with Dub to automatically create and manage shortlinks for your content.
This plugin synchronizes your Payload collections with Dub.co, ensuring that every published document gets a corresponding shortlink, tag, and color configuration.
[](https://www.npmjs.com/package/@rubixstudios/payload-dub)

Dub is the modern, open-source link attribution platform for short links, conversion tracking, and affiliate programs.
Create a free Dub account: [Dub](https://refer.dub.co/rubixstudios)
## Installation
```sh
pnpm add @rubixstudios/payload-dub
```
```typescript
// payload.config.ts
import { buildConfig } from 'payload/config'
import { payloadDub } from '@rubixstudios/payload-dub'
export default buildConfig({
plugins: [
payloadDub({
collections: [
{ docs: 'posts', slugOverride: 'post' }, // Custom slug used for folder and shortlinks
{ docs: 'insights', slugOverride: 'insight' }, // Custom slug only
{ docs: 'news' }, // Default behavior
],
dubApiKey: process.env.DUB_API_KEY!,
siteUrl: process.env.NEXT_PUBLIC_SITE_URL!,
domain: 'mycustomdomain.com', // Optional: assign a custom domain
tenantId: '12345', // Optional: tenant identifier for workspace
isPro: false, // Optional: pro flag to enable/disable pro features
// Optional: overrides of dubCollection
dubCollection: {
overrides: {
access: {
read: ({ req }) => !!req.user,
create: ({ req }) => !!req.user,
},
admin: {
group: 'Marketing',
defaultColumns: ['shortLink', 'externalId'],
},
},
},
dubTagCollection: {
overrides: {
access: {
read: ({ req }) => !!req.user,
},
admin: {
group: 'Marketing',
defaultColumns: ['name', 'color'],
},
},
},
}),
],
})
```
## Notes
If you do not provide optional overrides, the plugin defaults to:
- Links readable by all
- Tags are readable, editable, and deletable by all logged in users
## Features
- **Automation**: Generates and updates shortlinks when documents are published or slugs change.
- **Folders**: Collections are organised in folders (Pro).
- **Tags**: Tags can be created and removed directly in Payload.
- **Sync**: Keeps Payload and Dub data consistent with minimal overhead.
- **Configurable**: Supports per-collection overrides for color, slug, and URL base.
- **Access Control**: Access, field and admin overrides for complete CMS control.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
For support or inquiries:
- LinkedIn: [rubixvi](https://www.linkedin.com/in/rubixvi/)
- Website: [Rubix Studios](https://rubixstudios.com.au)
## Author
Rubix Studios Pty. Ltd.
[https://rubixstudios.com.au](https://rubixstudios.com.au)