+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
+ |
+
+
+
+
+
+ |
+
+
+
-
-
+
-
-
-
-
-
- |
-
-
-
+ |
+
+
+
+ |
+
+
+
-
-
- Congrats on creating your first market on Manifold!
-
+ ">Did you know you create your own prediction market on Manifold for
+ any question you care about?
+
-
-
+ The following is a short guide to creating markets.
-
-
-
-
-
- Whether it's current events like Musk buying
+ Twitter or 2024
+ elections or personal matters
+ like book
+ recommendations or losing
+ weight,
+ Manifold can help you find the answer.
+
+
+ The following is a
+ short guide to creating markets.
+
+
+
+
+
+
+
+
+ What makes a good market?
-
-
- -
- Interesting
- topic. Manifold gives
- creators M$10 for
- each unique trader that bets on your
- market, so it pays to ask a question people are interested in!
-
+
+
+ -
+ Interesting
+ topic. Manifold gives
+ creators M$10 for
+ each unique trader that bets on your
+ market, so it pays to ask a question people are interested in!
+
- -
-
+ Clear resolution criteria. Any ambiguities or edge cases in your description
- will drive traders away from your markets.
-
+ will drive traders away from your markets.
+
- -
-
+ Detailed description. Include images/videos/tweets and any context or
- background
- information that could be useful to people who
- are interested in learning more that are
- uneducated on the subject.
-
- -
-
+ Add it to a group. Groups are the
- primary way users filter for relevant markets.
- Also, consider making your own groups and
- inviting friends/interested communities to
- them from other sites!
-
- -
- Part of a group. Groups are the
+ primary way users filter for relevant markets.
+ Also, consider making your own groups and
+ inviting friends/interested communities to
+ them from other sites!
+
+ -
+ Share it on social media. You'll earn the Sharing it on social media. You'll earn the M$500
- referral bonus if you get new users to sign up!
-
-
-
-
-
-
- Examples of markets you should
- emulate!
-
-
-
-
-
-
-
+
+
+
+
+ Why not
-
-
-
- create another marketcreate a market
- while it is still fresh on your mind?
-
-
-
+
+
+
+ Thanks for reading!
-
-
- David from Manifold
-
-
+
+
+ |
+
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
|
diff --git a/functions/src/emails.ts b/functions/src/emails.ts
index 6768e8ea..f90366fa 100644
--- a/functions/src/emails.ts
+++ b/functions/src/emails.ts
@@ -1,4 +1,3 @@
-
import { DOMAIN } from '../../common/envs/constants'
import { Answer } from '../../common/answer'
import { Bet } from '../../common/bet'
@@ -192,7 +191,6 @@ Cofounder of Manifold Markets
https://manifold.markets
`
-
await sendTextEmail(
privateUser.email,
'How are you finding Manifold?',
@@ -238,7 +236,8 @@ export const sendOneWeekBonusEmail = async (
export const sendCreatorGuideEmail = async (
user: User,
- privateUser: PrivateUser
+ privateUser: PrivateUser,
+ sendTime: string
) => {
if (
!privateUser ||
@@ -255,7 +254,7 @@ export const sendCreatorGuideEmail = async (
return await sendTemplateEmail(
privateUser.email,
- 'Market creation guide',
+ 'Create your own prediction market',
'creating-market',
{
name: firstName,
@@ -263,6 +262,7 @@ export const sendCreatorGuideEmail = async (
},
{
from: 'David from Manifold ',
+ 'o:deliverytime': sendTime,
}
)
}
diff --git a/functions/src/on-create-contract.ts b/functions/src/on-create-contract.ts
index 73076b7f..3785ecc9 100644
--- a/functions/src/on-create-contract.ts
+++ b/functions/src/on-create-contract.ts
@@ -1,13 +1,10 @@
import * as functions from 'firebase-functions'
-import * as admin from 'firebase-admin'
-import { getPrivateUser, getUser } from './utils'
+import { getUser } from './utils'
import { createNotification } from './create-notification'
import { Contract } from '../../common/contract'
import { parseMentions, richTextToString } from '../../common/util/parse'
import { JSONContent } from '@tiptap/core'
-import { User } from 'common/user'
-import { sendCreatorGuideEmail } from './emails'
export const onCreateContract = functions
.runWith({ secrets: ['MAILGUN_KEY'] })
@@ -31,23 +28,4 @@ export const onCreateContract = functions
richTextToString(desc),
{ contract, recipients: mentioned }
)
-
- await sendGuideEmail(contractCreator)
})
-
-const firestore = admin.firestore()
-
-const sendGuideEmail = async (contractCreator: User) => {
- const query = await firestore
- .collection(`contracts`)
- .where('creatorId', '==', contractCreator.id)
- .limit(2)
- .get()
-
- if (query.size >= 2) return
-
- const privateUser = await getPrivateUser(contractCreator.id)
- if (!privateUser) return
-
- await sendCreatorGuideEmail(contractCreator, privateUser)
-}
diff --git a/functions/src/on-create-user.ts b/functions/src/on-create-user.ts
index dfb6edaa..844f75fc 100644
--- a/functions/src/on-create-user.ts
+++ b/functions/src/on-create-user.ts
@@ -6,6 +6,7 @@ dayjs.extend(utc)
import { getPrivateUser } from './utils'
import { User } from 'common/user'
import {
+ sendCreatorGuideEmail,
sendInterestingMarketsEmail,
sendPersonalFollowupEmail,
sendWelcomeEmail,
@@ -22,6 +23,9 @@ export const onCreateUser = functions
await sendWelcomeEmail(user, privateUser)
+ const guideSendTime = dayjs().add(28, 'hours').toString()
+ await sendCreatorGuideEmail(user, privateUser, guideSendTime)
+
const followupSendTime = dayjs().add(48, 'hours').toString()
await sendPersonalFollowupEmail(user, privateUser, followupSendTime)
| |