Appearance
Kind 9041: Zap Goal
Overview
Kind 9041 defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event. This kind allows users to set up fundraising campaigns with specific targets and track progress through zap receipts.
Specification
Property | Value |
---|---|
Kind Number | 9041 |
Event Range | Regular |
Defined in | NIP-75 |
Content Format
The content
field contains a human-readable description of the fundraising goal.
Tags
Tag Name | Description | Format | Required |
---|---|---|---|
amount | Target amount in millisats | ["amount", "<millisats>"] | Yes |
relays | List of relays where zaps to this goal will be sent to and tallied from | ["relays", "<relay-url-1>", "<relay-url-2>", ...] | Yes |
closed_at | Timestamp for determining which zaps are included in the tally | ["closed_at", "<unix-timestamp-in-seconds>"] | No |
image | An image for the goal | ["image", "<image-url>"] | No |
summary | A brief description of the goal | ["summary", "<description>"] | No |
r | Reference to a URL related to the goal | ["r", "<url>"] | No |
a | Reference to an addressable event | ["a", "<kind>:<pubkey>:<identifier>", "<optional-relay-url>"] | No |
zap | Beneficiary pubkey(s) for the goal | ["zap", "<pubkey>", "<relay-url>", "<lud16>", "<weight>"] | No |
Client Behavior
Clients MAY display funding goals on user profiles.
When zapping a goal event, clients MUST include the relays in the relays
tag of the goal event in the zap request relays
tag.
When zapping an addressable event with a goal
tag, clients SHOULD tag the goal event id in the e
tag of the zap request.
Relay Behavior
Relays should handle these events like regular events. Relays listed in the relays
tag are expected to receive and store zap receipts related to the goal.
Use Cases
- Fundraising campaigns
- Adding funding goals to events such as long-form posts, badges, or live streams
- Community funding for projects or events
- Travel expense fundraising
Example
json
{
"id": "...",
"pubkey": "...",
"created_at": 1671217411,
"kind": 9041,
"tags": [
["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com"],
["amount", "210000"],
["closed_at", "1671300000"],
["image", "https://example.com/goal-image.jpg"],
["summary", "Help fund travel expenses for the conference"]
],
"content": "Nostrasia travel expenses",
"sig": "..."
}
References
Related Kinds
- Kind 9734: Zap Request
- Kind 9735: Zap Receipt
Notes
Zap receipts published after the closed_at
timestamp SHOULD NOT count towards the goal progress.
Addressable events can link to a goal by using a goal
tag specifying the event id and an optional relay hint:
json
{
"kind": 30023,
"tags": [
["goal", "<event-id>", "<optional-relay-url>"],
// rest of tags...
],
// other fields...
}