Complete step-by-step documentation to connect your database, utilize the NPM SDK React components, or use the raw REST APIs to automate certificate generation and sending headlessly.
Configure Bridge
Expose database API endpoint
Map Template
Bind tokens like {{Name}}
Filter Data
Select recipient conditions
SMTP Send
Bulk render & send emails
DragXcel never stores your data.
Your records are processed one at a time in memory during certificate generation and are wiped immediately after sending. DragXcel only stores your column structure — never the actual data.
| What DragXcel Stores | What DragXcel Never Stores |
|---|---|
| Column names only | Actual row data |
| Certificate template design | Your database credentials |
| API Keys | Personal information of recipients |
| SMTP config (encrypted) | Emails or names after sending |
Implement these 3 layers on your own server to ensure your endpoint cannot be accessed by anyone except DragXcel.
Every request DragXcel makes to your endpoint includes your Protection Key as the x-dragxcel-token header. Reject any request that does not include it.
app.get('/api/students', async (req, res) => {
const token = req.headers['x-dragxcel-token']
if (!token || token !== process.env.DRAGXCEL_PROTECTION_KEY) {
return res.status(403).json({ error: 'Forbidden' })
}
const data = await db.collection('students').find().toArray()
res.json(data)
})Never expose your full database record. Only return the columns that DragXcel needs for certificate generation.
For maximum security, whitelist only DragXcel's server IP addresses on your firewall or hosting provider.
Choose the integration path that matches your stack.
The dragxcel-sdk provides 4 ready-made UI components that handle the entire certificate automation workflow. Install the package, drop the buttons into your page, and they coordinate automatically via localStorage. No custom backend routes or local state providers needed.
npm install dragxcel-sdkBelow is a full dashboard implementation that fetches participants from your server and feeds them to the SDK:
import React, { useEffect, useState } from 'react';
import {
ConnectDataButton,
FilterDataButton,
MapCertificateButton,
SendCertificatesButton
} from 'dragxcel-sdk';
export default function Dashboard() {
const [participants, setParticipants] = useState([]);
// Fetch local participants from your application's database
useEffect(() => {
fetch('/api/participants')
.then(res => res.json())
.then(data => setParticipants(data))
.catch(err => console.error("Failed to load data", err));
}, []);
return (
<div style={{ padding: '30px', fontFamily: 'sans-serif' }}>
<h1>DragXcel Certificate Dashboard</h1>
<div style={{ display: 'flex', gap: '16px', marginTop: '20px' }}>
{/* Pass your API-fetched data as fallbackData */}
<ConnectDataButton fallbackData={participants} baseUrl="https://dragxcel.in" />
<FilterDataButton />
<MapCertificateButton baseUrl="https://dragxcel.in" />
<SendCertificatesButton baseUrl="https://dragxcel.in" />
</div>
</div>
);
}We import the 4 pre-built buttons from dragxcel-sdk alongside standard React state hooks.
We declare a participants state to cache our local records fetched from the database on initial mount.
Receives fallbackData to hold the student list. When clicked, it opens a modal requesting the User-End and Protection Keys, saving records to local storage.
Reads the cached records directly from browser memory. Displays a GUI rule builder allowing users to set qualification filters.
Uses the Server-End key to request your canvas schema from DragXcel, verifying where tokens (e.g. {Name}) match local data columns.
The final trigger wizard. Collects SMTP details, maps final templates, triggers the bulk render worker, and streams progress.
The buttons share records and session details via the browser window's localStorage keys:
Prompts for User-End Keys and caches the participants dataset.
fallbackData (Array<Object>, optional): Backup list of participants for sandbox/local testing.baseUrl (String, default: "https://dragxcel.in"): Host target to resolve key validation.Toggles modal view (isOpen), tracks text input fields (userKey, protectionKey), and manages status feedback message.
Saves credentials (dxl_user_key, dxl_protection_key), columns headers list (dxl_columns), and full student records cache (dxl_raw_data).
Provides a client-side filter engine to select qualified participants.
None. Reads directly from cached localStorage records.
Internal States:Stores active filter rules configurations (rules), logical operation operator (logic: AND/OR), and filters badge count.
Saves filtered records (dxl_filtered_data) and active rules schema (dxl_filters).
Authenticates template mapping structure from the DragXcel server.
baseUrl (String): Gateway URL for templates retrieval.Stores Server-End Key input string (serverKey) and handles credential confirmation validation.
Saves template design token keys list (dxl_template) and server authentication key (dxl_server_key).
SMTP configuration wizard, recipient toggling, test sending, and bulk job dispatcher.
baseUrl (String): Server URL pointing to the bulk worker API routes.step (Number: 1 to 4): Active wizard flow step.smtpAccounts (Array): List of email accounts and passwords used for delivery load-balancing.selectedIndices (Set): Set of checked indices targeting selected students.jobId (String) & progress (Number): Progress streaming identifiers.Reads datasets and templates. Wipes dxl_filtered_data from the client cache upon completion.
{Name}) match keys in the local dataset exactly.Need help integrating the SDK or API? Contact Support
