CRM App Backend
Schema, API & AI Agent
A production-ready CRM backend schema and Starter Kit on Back4app: Contact, Company, Deal, Activity, pipeline, ER diagram, data dictionary, JSON schema, API playground, and a one-click AI Agent prompt to deploy in minutes. Choose from 13+ technologies for step-by-step integration guides.
Key Takeaways
On this page you get a production-ready CRM schema, a one-click AI prompt, and links to step-by-step guides for 13+ technologies — so you can ship a CRM app without building the backend.
- Deploy in minutes — paste the AI Agent prompt and get a running app with frontend, backend, and database.
- Secure by default — ACLs and assignedTo so users see only their assigned deals and data.
- 13+ technology guides — step-by-step SDK integration for Flutter, React, Next.js, Android, iOS, Vue, Angular, and more.
- REST + GraphQL — both APIs are auto-generated; no custom endpoints to write.
- Five classes — _User, Company, Contact, Deal (pipeline), Activity (tasks/events).
What Is the CRM App Backend Template?
Back4app is a backend-as-a-service (BaaS) ideal for CRM apps: managed database, real-time sync, role-based access, and SDKs for 13+ technologies. The CRM App Backend Template is a pre-built, production-ready backend schema on Back4app. It gives you five classes (_User, Company, Contact, Deal, Activity), pipeline stages, REST and GraphQL APIs, and a one-click AI Agent prompt — so you can connect any frontend and ship a working CRM app in minutes. Pick your technology below for step-by-step SDK integration.
Best for:
Overview
A CRM app helps teams manage contacts, companies, deals, and activities in a pipeline. Under the hood it needs user registration, CRUD for Contact/Company/Deal/Activity, pipeline stages, optional real-time sync, and offline support for mobile.
The schema below defines five classes — _User (built-in), Company, Contact, Deal, and Activity — with pointers linking deals to contacts and companies, and activities to contacts or deals. With the Back4app SDK you can interact with this backend from any app — querying by stage, creating and updating deals, logging activities — without writing a custom API layer.
Core CRM Features
This backend template includes the following CRM features out of the box. Choose your technology below for step-by-step integration.
Contact management
Store and manage contacts with name, email, phone, company, and notes. Ideal for CRM apps.
Company management
Track companies with name, website, industry, and address. Links to contacts and deals.
Deal pipeline
Sales pipeline with stages, amount, expected close date, and assignment. Built for CRM backends.
Activity tracking
Log calls, emails, meetings, and notes linked to contacts and deals. Works with CRM SDK.
User & permissions
Built-in user model and pointers for ownership and assignment. ACLs out of the box for CRM.
Why Build Your CRM CRM Backend with Back4app?
Back4app gives you a ready backend and a typed SDK so you can build your CRM app without writing REST glue or managing auth yourself.
- •SDKs for every stack: Flutter, React, Android, iOS, Vue, Angular, .NET — or use REST / GraphQL from any language.
- •Auth & ACLs out of the box: user sign-up, login, session tokens, and row-level access control with no custom middleware.
- •Real-time & offline: Live Queries over WebSockets for instant UI updates; supported SDKs offer local datastore pinning for offline-first apps.
- •Flexible schema: add fields from the dashboard or API at any time — no migrations, no downtime.
Same schema and APIs for every stack — switch clients later without changing the backend.
Core Benefits
A production-ready CRM backend so you can ship faster and focus on your app.
Ship Faster, No Backend Code
REST & GraphQL APIs and a ready-to-use schema — connect your app and go.
Secure by Default
ACLs and class-level permissions; restrict by assignedTo and createdBy.
Real-Time Pipeline
Live Queries over WebSockets for instant deal and activity updates.
Built-In Auth
User sign-up, login, and session handling out of the box.
Works Offline
Local pinning keeps contacts and deals available offline and syncs when you reconnect.
Deploy in Minutes
Use the AI Agent to create and deploy your CRM app from this template.
Ready to try it?
Let the Back4app AI Agent create your CRM app backend, connect the your chosen technology frontend, and deploy — all from a single prompt.
Free to start — 50 AI Agent prompts/month, no credit card required
Technical Stack
Everything powering this CRM app template at a glance.
ER Diagram
Entity-Relationship diagram for the CRM CRM app data model.
CRM schema: _User, Company, Contact, Deal, Activity with pointers for company, contact, deal, assignedTo, relatedTo, createdBy.
View diagram source
erDiagram
_User {
String objectId PK
String username
String email
String password
Date createdAt
Date updatedAt
}
Company {
String objectId PK
String name
String website
String industry
String address
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Contact {
String objectId PK
String name
String email
String phone
Pointer company FK
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Deal {
String objectId PK
String title
Number amount
String stage
Pointer contact FK
Pointer company FK
Date expectedCloseDate
String notes
Pointer assignedTo FK
Date createdAt
Date updatedAt
}
Activity {
String objectId PK
String type
String subject
String description
Date dueDate
Date completedAt
Pointer relatedTo FK
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Company ||--o{ Contact : "has"
Company ||--o{ Deal : "has"
Contact ||--o{ Deal : "has"
_User ||--o{ Deal : "assignedTo"
_User ||--o{ Activity : "createdBy"
Contact ||--o{ Activity : "relatedTo"
Deal ||--o{ Activity : "relatedTo"
_User ||--o{ Company : "createdBy"
_User ||--o{ Contact : "createdBy"
Integration Flow
Auth-to-CRUD sequence: how your {tech} app talks to Back4app — login, then query contacts and deals, update pipeline.
View diagram source
sequenceDiagram
participant User
participant App as Your App
participant Back4app as Back4app Cloud
User->>App: Login
App->>Back4app: POST /login (username, password)
Back4app-->>App: Session token
App-->>User: Logged in
User->>App: Load contacts and deals
App->>Back4app: GET /classes/Contact, GET /classes/Deal
Back4app-->>App: List of Contact and Deal objects
App-->>User: Show pipeline
User->>App: Create deal or contact
App->>Back4app: POST /classes/Deal or POST /classes/Contact
Back4app-->>App: Deal or Contact (objectId)
App-->>User: Updated listData Dictionary
Complete field reference for every class in the schema.
| Field | Type | Description | Required |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | auto |
| name | String | Full name of the contact | |
| String | Email address | — | |
| phone | String | Phone number | — |
| company | Pointer<Company> | Company this contact belongs to | — |
| notes | String | Free-form notes | — |
| createdBy | Pointer<_User> | User who created this contact | — |
| createdAt | Date | Auto-generated creation timestamp | auto |
| updatedAt | Date | Auto-generated last-update timestamp | auto |
9 fields in Contact
Security & Permissions
How ownership, ACLs, and class-level permissions protect data in this CRM schema.
Row-Level ACLs
Use ACLs and pointers (assignedTo, createdBy) so users only see and edit their assigned deals and related data.
Class-Level Permissions
CLPs restrict which roles or users can create, read, update, or delete objects at the class level.
Pointer-Based Ownership
Deal.assignedTo and Activity.createdBy link to _User; Cloud Code can enforce visibility and edits by role.
Schema (JSON)
Raw JSON schema definition — copy and use in your Back4app app or import via the API.
{
"classes": [
{
"className": "Contact",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": false
},
"phone": {
"type": "String",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Company",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"website": {
"type": "String",
"required": false
},
"industry": {
"type": "String",
"required": false
},
"address": {
"type": "String",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Deal",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"title": {
"type": "String",
"required": true
},
"amount": {
"type": "Number",
"required": false
},
"stage": {
"type": "String",
"required": false
},
"contact": {
"type": "Pointer",
"targetClass": "Contact",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"expectedCloseDate": {
"type": "Date",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"assignedTo": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Activity",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"type": {
"type": "String",
"required": false
},
"subject": {
"type": "String",
"required": false
},
"description": {
"type": "String",
"required": false
},
"dueDate": {
"type": "Date",
"required": false
},
"completedAt": {
"type": "Date",
"required": false
},
"relatedTo": {
"type": "Pointer",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "_User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}Build with AI Agent
Use the Back4app AI Agent to build a real CRM app from this template: it will create the frontend, the backend (this schema, auth, and APIs), and deploy it — no manual setup. The prompt below describes this CRM stack so the Agent can generate a production-ready app in one go.
Create a CRM app on Back4app with this exact schema and behavior. Schema: 1. _User (use Back4app built-in): username (String, required), email (String, required), password (String, required); objectId, createdAt, updatedAt (system). 2. Company: name (String, required), website (String), industry (String), address (String), notes (String), createdBy (Pointer to _User); objectId, createdAt, updatedAt (system). 3. Contact: name (String, required), email (String), phone (String), company (Pointer to Company), notes (String), createdBy (Pointer to _User); objectId, createdAt, updatedAt (system). 4. Deal: title (String, required), amount (Number), stage (String; e.g. lead, qualified, proposal, negotiation, won, lost), contact (Pointer to Contact), company (Pointer to Company), expectedCloseDate (Date), notes (String), assignedTo (Pointer to _User); objectId, createdAt, updatedAt (system). 5. Activity: type (String; e.g. call, email, meeting, note), subject (String), description (String), dueDate (Date), completedAt (Date), relatedTo (Pointer to Contact or Deal), createdBy (Pointer to _User); objectId, createdAt, updatedAt (system). Security: - Set ACLs so only authenticated users can access data; use role-based or owner-based rules where appropriate (e.g. assignedTo, createdBy). - Use Class-Level Permissions so only authenticated users can create/read/update/delete these classes. Auth: - Sign-up (username, email, password) and login; support logout/session. Behavior: - Full CRUD for Company, Contact, Deal, and Activity. - List deals with filter by stage and order by expectedCloseDate or updatedAt (pipeline view). - List activities by relatedTo (Contact or Deal). - Optional: real-time Live Queries for Deal and Activity for dashboard/pipeline updates. - Optional: offline pinning for mobile (Contacts, Deals, Activities). Deliver: - Create the Back4app app with the schema above, ACLs, and any Cloud Code needed. - Generate the frontend and connect it to this backend; deploy so the app is runnable end-to-end.
Press the button below to open the Agent with this template's prompt pre-filled.
This is the base prompt without a technology suffix. Choose a technology page below for a tech-specific prompt that also generates the frontend.
API Playground
Try the REST and GraphQL endpoints for the CRM schema. Responses from the example data above — no Back4app account needed.
Uses the same CRM schema (Contact, Company, Deal, Activity) as this template.
Choose Your Technology
Each guide includes step-by-step SDK integration, state management patterns, a full data model, and a tech-specific AI Agent prompt.
What You Get with Every Technology
No matter which technology you pick, every guide and deployment shares this backend.
Same Schema
Five classes (_User, Company, Contact, Deal, Activity) with pipeline and ACLs — identical across all guides.
REST & GraphQL APIs
Auto-generated endpoints for every CRUD operation, with auth headers and pagination built in.
Auth & Sessions
Sign-up, login, and session tokens out of the box — no custom auth middleware needed.
AI Agent Prompt
Each technology page adds a tech-specific suffix to the base prompt so the Agent generates the right frontend.
Live Queries
Subscribe to real-time changes over WebSockets — available from any SDK that supports it.
Flexible Schema
Add fields, classes, or relations at any time from the dashboard or API — no migrations required.
Frequently Asked Questions
Common questions about the CRM app backend template.
Ready to Build Your CRM App?
Start your project in minutes — pick a technology and follow the guide, or let the AI Agent build it for you. No credit card required.