Skip to main content
Issuing certificates on blockchain is a powerful way to create tamper-proof, verifiable academic or professional credentials. A traditional implementation usually requires:
  • Backend servers listening to on-chain events
  • Relayers or cron jobs to call issuing contracts
  • Notification services to inform students
This increases infrastructure complexity and operational cost. In this use case, we demonstrate how Kwala Workflows can fully automate the end-to-end certificate lifecycle, from student registration to certificate issuance and real-time notification, without writing any backend server logic.

Overview

The system consists of three core layers:
  • Student registration: On-chain
  • Certificate issuance: On-chain automation
  • Student notification: Off-chain via Telegram
The entire flow is driven by smart contracts, on-chain events and YAML-based Kwala workflows. Kwala acts as the event-driven automation layer, bridging smart contracts and external systems. The complete flow involves two smart contracts and two Kwala workflows working together to automatically issue certificates and notify students when registration occurs.

Step 1: Student registration smart contract

The StudentRegistry contract is responsible for registering students on-chain with:
  • A unique student ID
  • A wallet address
Once a student registers, the contract emits an event that becomes the trigger for automation. Deployed contract address
StudentRegistry Contract: 0x2b9ab67a9ebfe5e5481d007071e38950ea29da4a
In this contract:
  • Each wallet can register only once
  • Each student ID is globally unique
  • Registration emits an event consumed by Kwala
Smart Contract (SC1)
StudentRegistry.sol
Event Signature: StudentRegistered(address indexed student, uint256 indexed studentId)This event triggers the automated certificate issuance workflow.

Step 2: Certificate issuance smart Contract

The CertificateIssuer contract issues certificates only once per student and records:
  • Certificate ID
  • Student wallet
  • Student ID
It is not called directly by users. Instead, it is invoked automatically by Kwala when a registration event occurs. Deployed Contract Address
CertificateIssuer Contract: 0x192c91565ed652675fcd88a23e096261b5e290e1
Smart Contract (SC2)
CertificateIssuer.sol
Important: This contract should only be called by trusted relayers like Kwala to prevent unauthorized certificate issuance.

Step 3: Workflow 1 - Auto-issuing certificates via Kwala

Automatically issue a certificate immediately after student registration. Trigger
  • Event: StudentRegistered(address,uint256)
  • Source Contract: StudentRegistry (SC1) 0x2b9AB67a9EBfe5E5481d007071E38950EA29da4a
  • Chain: Polygon Amoy 80002
Actions
  1. CALL issueCertificate(student, studentId) on CertificateIssuer
  2. POST a Telegram message indicating certificate issuance has started
Workflow YAML: Issue certificate
IssueCertificate.yaml
Kwala extracts event parameters dynamically using re.event(index) and passes them directly to smart contract calls without backend parsing required.
  • re.event(0) → student address
  • re.event(1) → student ID

Step 4: Workflow 2 - Certificate delivery notification

Notify the student once the certificate is successfully issued on-chain. Trigger
  • Event: CertificateIssued(address,uint256,uint256)
  • Source Contract: CertificateIssuer (SC2) 0x192c91565ed652675FCd88A23e096261b5e290E1
  • Chain: Polygon Amoy 80002
Action Send a personalized Telegram message containing:
  • Student ID
  • Certificate ID
  • Wallet address
Workflow YAML: Certificate notification
CertificateNotification.yaml
API payload
Dynamic Parameters:
  • re.event(0) → student wallet address
  • re.event(1) → student ID
  • re.event(2) → certificate ID
Kwala automatically substitutes these placeholders with actual event data at runtime.

Complete flow summary

The certificate issuance workflow follows these four steps:
  1. Step 1: Registration - Student calls register() on StudentRegistry contract
  2. Step 2: Event emitted - StudentRegistered event triggers Workflow 1
  3. Step 3: Certificate issued - Kwala calls issueCertificate() on CertificateIssuer
  4. Step 4: Notification - CertificateIssued event triggers Workflow 2 and Telegram notification sent
This architecture can be extended for:
  • Academic credentials - Degrees, diplomas, and course completions
  • Professional badges - Skill certifications and training credentials
  • Government IDs - Verifiable identity documents and licenses
  • Enterprise credentials - Employee certifications and compliance records

Conclusion

This use case demonstrates how Kwala Workflows can be used to build a production-ready, automated certificate issuance system using solidity smart contracts, on-chain events and YAML workflow definitions. By combining StudentRegistry, CertificateIssuer, and Kwala, institutions can issue verifiable certificates at scale securely, transparently, and without infrastructure overhead. Kwala handles the automation. Blockchain guarantees trust.

Next steps

Monitor Your Workflow

Track execution history, debug issues, and optimize your automation

Best Practices

Learn optimization strategies and production patterns