代理商线索跟踪器
与 AI 代理一起构建
代理线索跟踪后端

广告代理线索跟踪后端模板
活动提案、预算计划和创意简报跟踪

一个生产就绪的广告代理线索跟踪器后端在 Back4app,具有账户、活动提案、预算计划、创意简报、状态历史和活动备注记录。包括ER图、数据字典、JSON模式、API沙箱和一个用于快速引导的AI代理提示。

关键要点

该模板为您提供一个广告代理机构潜在客户后端,包括帐户、CampaignPitch、预算计划、创意简报、状态历史和活动备注记录,以便运营负责人可以保持状态历史可审计。

  1. Pitch管道可见性使用清晰的阶段值、所有者指针、下次审查日期和客户预算建模CampaignPitch条目。
  2. 预算控制跟踪与帐户和CampaignPitch相关联的BudgetPlan行,包括货币、计划支出、已支出金额和批准状态。
  3. 创意简报历史保持与每个CampaignPitch相关联的创意简报交付物、截止日期和备注。
  4. 可审计状态日志使用 StatusHistory 和 ActivityNote 来记录是谁更改了提案以及记录了什么备忘。
  5. 跨平台代理后台通过一个 REST 和 GraphQL API 为账户、CampaignPitch、预算计划和简报记录提供网络和移动工具。

理解广告代理领导跟踪后台

当广告代理团队增长时,共享收件箱的规模不再适用;您需要任务分配、权限以及每个人都信任的时间线。小的延迟会迅速累积。Back4app 为需要截止日期、文档和通讯的广告代理实践锚定账户、CampaignPitch、预算计划、CreativeBrief 和 StatusHistory,以便在一个有权限的工作区中进行管理。方案涵盖用户(用户名、电子邮件、密码、角色)、账户(账户名称、行业、所有者、状态)、CampaignPitch(活动名称、账户、阶段、客户预算、所有者、下次审查时间)、预算计划(账户、CampaignPitch、货币、计划支出、已花费、审批状态)、CreativeBrief(简报标题、CampaignPitch、简报所有者、交付物、截止日期、备注)、StatusHistory(CampaignPitch、被更改者、从阶段、到阶段、变更备注、变更时间)和 ActivityNote(CampaignPitch、作者、备注类型、正文、记录时间),内置身份验证和可审计跟踪。连接您首选的前端并更快发布。

最佳适用:

广告代理领导跟踪活动提案管理客户预算管理创意简报记录运营仪表板团队选择 BaaS 作为代理工作流程

广告代理:后端快照

广告代理对象的共享语言——相同事物的相同名称——和底层架构同样重要。

中心保持 Account、CampaignPitch 和 BudgetPlan 的语言一致,因此产品、运营和工程在说“记录”时意味着同样的事情。

代理跟踪核心功能

此中心中的每个技术卡片都使用相同的代理后端架构,包括 Account、CampaignPitch、BudgetPlan、CreativeBrief、StatusHistory 和 ActivityNote。

账户接收和资格审核

账户存储 accountName、行业、所有者和状态。

活动建议书跟踪

CampaignPitch 将账户、campaignName、阶段、clientBudget、所有者和 nextReviewAt 关联在一起。

客户预算管理

BudgetPlan 记录每个 CampaignPitch 的 plannedSpend、spentToDate、货币和 approvalStatus。

创意简报日志

CreativeBrief 存储每个 CampaignPitch 的 briefTitle、可交付成果、dueDate 和备注。

可审计的状态历史

StatusHistory 和 ActivityNote 捕捉 fromStage、toStage、noteType、body、changedBy 和 loggedAt。

为什么使用 Back4app 构建您的广告代理商潜在客户跟踪后端?

Back4app 为您的团队提供了跟踪代理商潜在客户、预算批准和创意简报历史所需的部分,无需手动进行所有操作。

  • 将潜在客户和提案记录集中在一个地方: Account 和 CampaignPitch 类保持客户 accountName、行业、阶段和所有者的关联。
  • 始终可见的预算字段: BudgetPlan 行包含 plannedSpend、spentToDate、货币和 approvalStatus,允许账户潜在客户将范围与客户上限进行比较。
  • 审计就绪的简报历史: CreativeBrief 和 StatusHistory 捕获每次交接的可交付物、备注、changeNote 值和 changedAt 时间戳。

构建一次代理工作流程,然后在网络、移动和管理工具中重复使用相同的后端合同。

核心优势

一个帮助您的运营团队保持活动、预算和简报一致的潜在客户追踪后端。

减少丢失的提案更新

Account 和 CampaignPitch 记录使所有者、阶段和 nextReviewAt 对整个团队可见。

在工作开始前进行预算检查

BudgetPlan 行提前显示 plannedSpend 和 spentToDate,以便账户经理能够在生产前发现差距。

您可以信任的修订历史

CreativeBrief 可交付物和 StatusHistory 时间戳为您提供客户变更的清晰顺序。

清洁的交接

账户所有者与简报所有者之间减少销售、策略和创意之间的混淆。

可查询的代理管道

将账户、活动提案、预算计划和活动备注记录存储在不同的类中,以便仪表板可以按阶段、货币或备注类型进行过滤。

快速的人工智能辅助设置

通过一个结构化的提示生成后端脚手架和集成指南。

准备好启动您的代理线索跟踪器了吗?

让Back4app AI代理为您的代理线索后端搭建脚手架,并通过一个提示生成账户、活动提案、预算计划和简报跟踪。

免费开始 - 每月50个AI代理提示,无需信用卡

机构技术栈

此广告代理客户跟踪后端模板包含所有内容。

前端
13+ 技术
后端
Back4app
数据库
MongoDB
认证
内置认证 + 会话
API
REST 和 GraphQL
实时
Live Queries

账号到状态的实体关系图

广告代理商潜在客户追踪架构的实体关系模型。

查看图表源
Mermaid
erDiagram
    User ||--o{ Account : "owner"
    User ||--o{ CampaignPitch : "owner"
    User ||--o{ CreativeBrief : "briefOwner"
    User ||--o{ StatusHistory : "changedBy"
    User ||--o{ ActivityNote : "author"
    Account ||--o{ CampaignPitch : "account"
    Account ||--o{ BudgetPlan : "account"
    CampaignPitch ||--o{ BudgetPlan : "campaignPitch"
    CampaignPitch ||--o{ CreativeBrief : "campaignPitch"
    CampaignPitch ||--o{ StatusHistory : "campaignPitch"
    CampaignPitch ||--o{ ActivityNote : "campaignPitch"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        Date createdAt
        Date updatedAt
    }

    Account {
        String objectId PK
        String accountName
        String industry
        String ownerId FK
        String status
        Date createdAt
        Date updatedAt
    }

    CampaignPitch {
        String objectId PK
        String campaignName
        String accountId FK
        String stage
        Number clientBudget
        String ownerId FK
        Date nextReviewAt
        Date createdAt
        Date updatedAt
    }

    BudgetPlan {
        String objectId PK
        String accountId FK
        String campaignPitchId FK
        String currency
        Number plannedSpend
        Number spentToDate
        String approvalStatus
        Date createdAt
        Date updatedAt
    }

    CreativeBrief {
        String objectId PK
        String briefTitle
        String campaignPitchId FK
        String briefOwnerId FK
        Array deliverables
        Date dueDate
        String notes
        Date createdAt
        Date updatedAt
    }

    StatusHistory {
        String objectId PK
        String campaignPitchId FK
        String changedById FK
        String fromStage
        String toStage
        String changeNote
        Date changedAt
        Date createdAt
        Date updatedAt
    }

    ActivityNote {
        String objectId PK
        String campaignPitchId FK
        String authorId FK
        String noteType
        String body
        Date loggedAt
        Date createdAt
        Date updatedAt
    }

代理商同步流程

进行身份验证、账户查找、宣传方案创建、预算计划审核和创意简报更新的典型运行流程。

查看图表源
Mermaid
sequenceDiagram
  participant User
  participant App as Advertising Agency Lead Tracker App
  participant Back4app as Back4app Cloud

  User->>App: Sign in with agency credentials
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Open account pipeline
  App->>Back4app: GET /classes/Account?include=owner
  Back4app-->>App: Account list with owners

  User->>App: Create a campaign pitch
  App->>Back4app: POST /classes/CampaignPitch
  Back4app-->>App: CampaignPitch objectId

  User->>App: Add a creative brief and budget plan
  App->>Back4app: POST /classes/CreativeBrief
  App->>Back4app: POST /classes/BudgetPlan
  Back4app-->>App: Brief and budget saved

  User->>App: Record a status change
  App->>Back4app: POST /classes/StatusHistory
  Back4app-->>App: StatusHistory saved

  App->>Back4app: Subscribe to live CampaignPitch updates
  Back4app-->>App: Real-time pitch stage changes

机构实用指南

机构领导模式中每个类的完整字段级参考。

字段类型描述必填
objectIdStringAuto-generated unique identifier自动
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringRole for agency workflow access
createdAtDateAuto-generated creation timestamp自动
updatedAtDateAuto-generated last-update timestamp自动

7 字段在 User 中

机构记录的访问规则

ACL 和 CLP 策略如何保护账户、提案、预算计划、简要日志和审计历史。

账户拥有规则

只有指定的团队成员或管理员可以更新账户状态和行业字段。

提案和预算限制

限制CampaignPitch和BudgetPlan的写入权限,仅限具有代理访问权限的经过身份验证的用户;在Cloud Code中验证owner、briefOwner和spentToDate。

审计日志完整性

StatusHistory和ActivityNote条目应为追加式,以便简报、预算和提案的变更历史保持可信。

JSON模式

准备复制到Back4app或用作实现参考的原始JSON模式定义。

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Account",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "accountName": {
          "type": "String",
          "required": true
        },
        "industry": {
          "type": "String",
          "required": true
        },
        "owner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "status": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CampaignPitch",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "campaignName": {
          "type": "String",
          "required": true
        },
        "account": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Account"
        },
        "stage": {
          "type": "String",
          "required": true
        },
        "clientBudget": {
          "type": "Number",
          "required": true
        },
        "owner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "nextReviewAt": {
          "type": "Date",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "BudgetPlan",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "account": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Account"
        },
        "campaignPitch": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CampaignPitch"
        },
        "currency": {
          "type": "String",
          "required": true
        },
        "plannedSpend": {
          "type": "Number",
          "required": true
        },
        "spentToDate": {
          "type": "Number",
          "required": true
        },
        "approvalStatus": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "CreativeBrief",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "briefTitle": {
          "type": "String",
          "required": true
        },
        "campaignPitch": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CampaignPitch"
        },
        "briefOwner": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "deliverables": {
          "type": "Array",
          "required": true
        },
        "dueDate": {
          "type": "Date",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "StatusHistory",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "campaignPitch": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CampaignPitch"
        },
        "changedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "fromStage": {
          "type": "String",
          "required": true
        },
        "toStage": {
          "type": "String",
          "required": true
        },
        "changeNote": {
          "type": "String",
          "required": false
        },
        "changedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "ActivityNote",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "campaignPitch": {
          "type": "Pointer",
          "required": true,
          "targetClass": "CampaignPitch"
        },
        "author": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "noteType": {
          "type": "String",
          "required": true
        },
        "body": {
          "type": "String",
          "required": true
        },
        "loggedAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

与AI代理一起构建

使用 Back4app AI Agent 从此模板生成一个真实的广告代理商潜在客户跟踪应用,包括前端、后端、身份验证,以及帐户、CampaignPitch、BudgetPlan 和简报工作流。

Back4app AI Agent
准备构建
在 Back4app 上创建一个广告代理商潜在客户跟踪应用后端,使用这个精确的架构和行为。

架构:
1. 用户(使用 Back4app 内置):用户名、电子邮件、密码、角色;objectId,createdAt,updatedAt(系统)。
2. 帐户:accountName(字符串,必填)、industry(字符串,必填)、owner(指向用户的指针,必填)、status(字符串,必填);objectId,createdAt,updatedAt(系统)。
3. CampaignPitch:campaignName(字符串,必填)、account(指向帐户的指针,必填)、stage(字符串,必填)、clientBudget(数字,必填)、owner(指向用户的指针,必填)、nextReviewAt(日期,选填);objectId,createdAt,updatedAt(系统)。
4. BudgetPlan:account(指向帐户的指针,必填)、campaignPitch(指向CampaignPitch的指针,必填)、currency(字符串,必填)、plannedSpend(数字,必填)、spentToDate(数字,必填)、approvalStatus(字符串,必填);objectId,createdAt,updatedAt(系统)。
5. CreativeBrief:briefTitle(字符串,必填)、campaignPitch(指向CampaignPitch的指针,必填)、briefOwner(指向用户的指针,必填)、deliverables(数组<string>,必填)、dueDate(日期,必填)、notes(字符串,选填);objectId,createdAt,updatedAt(系统)。
6. StatusHistory:campaignPitch(指向CampaignPitch的指针,必填)、changedBy(指向用户的指针,必填)、fromStage(字符串,必填)、toStage(字符串,必填)、changeNote(字符串,选填)、changedAt(日期,必填);objectId,createdAt,updatedAt(系统)。
7. ActivityNote:campaignPitch(指向CampaignPitch的指针,必填)、author(指向用户的指针,必填)、noteType(字符串,必填)、body(字符串,必填)、loggedAt(日期,必填);objectId,createdAt,updatedAt(系统)。

安全性:
- 将帐户、CampaignPitch、BudgetPlan、CreativeBrief、StatusHistory 和 ActivityNote 的更改限制为经过身份验证的代理用户。保持 StatusHistory 为追加式,并在 Cloud Code 中验证所有权。

身份验证:
- 注册、登录、登出。

行为:
- 列出帐户,创建 CampaignPitch 记录,更新 BudgetPlan 总额,记录 CreativeBrief 修订,并为每一项重大更改编写审计日志。

交付:
- Back4app 应用程序,包含架构、ACL、CLP;用于帐户、提案、预算、简报日志和审计历史记录的前端。

按下面的按钮打开带有该模板提示预填充的代理。

这是没有技术后缀的基本提示。您可以随后调整生成的前端堆栈。

几分钟内部署每月 50 个免费提示无需信用卡

API沙盒

根据代理商线索模式尝试REST和GraphQL端点。响应使用虚拟数据,无需Back4app帐户。

正在加载游乐场…

使用与此模板相同的架构。

选择你的技术栈

展开每个卡片以了解如何将账户、CampaignPitch 和 BudgetPlan 集成到您选择的技术栈中。

Flutter 广告代理商潜在客户跟踪后台

React 广告代理商潜在客户跟踪后台

React 原生 广告代理商潜在客户跟踪后台

Next.js 广告代理商潜在客户跟踪后台

JavaScript 广告代理商潜在客户跟踪后台

Android 广告代理商潜在客户跟踪后台

iOS 广告代理商潜在客户跟踪后台

Vue 广告代理商潜在客户跟踪后台

Angular 广告代理商潜在客户跟踪后台

GraphQL 广告代理商潜在客户跟踪后台

REST API 广告代理商潜在客户跟踪后台

PHP 广告代理商潜在客户跟踪后台

.NET 广告代理商潜在客户跟踪后台

您将获得每项技术的内容

每个技术栈使用相同的代理后端架构和 API 合同。

统一的代理管道数据

使用一个架构管理账户、CampaignPitch、BudgetPlan 和 CreativeBrief 记录。

审计友好的状态历史

通过追加日志跟踪提案、预算和简报记录的变化。

客户工作预算可见性

为账户和运营团队保持 plannedSpend 和 spentToDate 可用。

为代理用户提供基于角色的访问权限

为账户负责人、创意人员和运营人员定义权限。

REST/GraphQL APIs 用于代理工具

为仪表盘、移动应用和自动化脚本提供灵活的 API。

代理堆栈比较

比较所有支持的技术的设置速度、SDK 风格和 AI 支持。

框架设置时间代理工作流收益SDK类型AI支持
约5分钟用于移动和网络的代理领导跟踪的单一代码库。输入的SDK完整
少于5分钟用于潜在客户、提案和预算审查的快速网络仪表板。输入的SDK完整
约3-7分钟跨平台移动应用程序,供账户团队使用。输入的SDK完整
快速设置(5分钟)面向代理商负责人的服务器渲染操作仪表板。输入的SDK完整
约3-5分钟轻量级网络集成用于代理操作。输入的SDK完整
约 5 分钟Android 原生应用程序供事务经理随时使用。类型化 SDK完整
不到 5 分钟iOS 原生应用程序用于代理审查和审批。类型化 SDK完整
约 3-7 分钟React 可视化的网络用户界面以便于管道可见性。类型化 SDK完整
快速(5分钟)设置用于机构操作的企业仪表盘。输入的SDK完整
不到2分钟灵活的GraphQL API用于账户和简报数据。GraphQL API完整
快速(2分钟)设置REST API与机构工具的集成。REST API完整
~3分钟服务器端 PHP 后端用于操作工作流。REST API完整
~3–7分钟.NET 后端用于代理商潜在客户自动化。类型化SDK完整

设置时间反映从项目启动到使用此模板架构进行首次账户或演示查询的预期持续时间。

机构问题

关于使用此模板构建广告代理商线索跟踪后台的常见问题。

广告代理团队应该如何分割职责而不在角色之间泄露数据?
哪种广告代理工作流程更能从结构化任务中受益,而不是自由形式的笔记?
我们如何扩展广告代理的自动化,进行提醒、任务和客户通知?
我如何使用 Flutter 查询账户和提案?
我如何在 Next.js Server Actions 中管理账户状态?
可以在离线状态下缓存 React Native 简报修订吗?
我如何防止未授权的预算编辑?
在 Android 上显示代理商管道数据的最佳方式是什么?

全球开发者信赖的选择

与 Back4app 模板一起,加入团队更快地交付代理工作流产品

G2 Users Love Us Badge

准备好构建您的广告代理潜在客户跟踪器了吗?

在几分钟内开始您的代理潜在客户项目。无需信用卡。

选择技术