Event tracking for messaging platform

The present disclosure relates to tracking events that result from a conversation on a messaging platform and that occur outside of the messaging platform. In one embodiment, the messaging platform may provide a user-selectable option that enables a first party or a second party to indicate that an event has occurred outside of the messaging platform. In another embodiment, the messaging platform may be configured to detect when a document is exchanged in a conversation via the messaging platform. In yet another embodiment, information may be extracted from a document exchanged in a conversation via a messaging platform. The extracted information may be used to determine whether an event has occurred outside of the messaging platform.

BACKGROUND

A social networking system (SNS) may enable its users to interact with and share information with each other through various interfaces provided by the SNS. For example, the SNS may provide a messaging platform for users to send messages to each other. Conversations between users using the messaging platform may result in events that occur outside the messaging platform or the social networking system. Conventionally, there is no way to track such events or even associate them with conversations or with the user involved in the conversations.

SUMMARY

The present disclosure relates generally to event tracking on a messaging platform, and more particularly to tracking events that result from a conversation on a messaging platform and that occur outside of the messaging platform.

Various inventive embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, code, or instructions executable by one or more processors, and the like, for event tracking. A first party and a second party may exchange messages via a messaging platform. The conversation between the parties via the messaging platform may result in the occurrence of an event, where the event occurs outside of the messaging platform. As a result, the messaging platform is unaware of the occurrences of such events. In certain embodiments, techniques are provided that enable the messaging platform to receive information regarding the occurrences of such events. This enables the messaging platform to associate events with conversations and the parties involved in the conversations.

In one embodiment, the messaging platform may provide a user-selectable option (e.g., a button) that enables a first party or a second party to indicate that an event involving the parties has occurred outside of the messaging platform. Upon selection of the user-selectable option, a user interface may be presented for the party selecting the option to input information related to the event. In some examples, information may be input as part of the same messaging platform conversation between the first and second parties.

In another embodiment, the messaging platform may be configured to detect when a document is exchanged in a conversation via the messaging platform. Upon detection of the document, the messaging platform may provide a user interface to a party of the conversation that enables the party to input information related to an event indicated by the document. While the user interface may be presented any time that a document is exchanged, in some embodiments, the user interface may be presented when it is determined that the document indicates an occurrence of the event.

In yet another embodiment, information may be extracted from a document exchanged between a first party and a second party in a conversation facilitated by a messaging platform. The extracted information may be used to determine whether an event has occurred between the parties outside of the messaging platform. The extracted information may be also used to determine values for attributes related to the event, such as the date when the event occurred, the amount of value exchanged as part of the event, and the like. In some embodiments, a user interface may be provided for one or both of the parties to input information related to the event, such as information that could not be determined from the information extracted from the document.

Accordingly, in various embodiments, a messaging platform (or a system communicating with or providing the messaging platform, such as a social networking system (SNS)) may receive and store information related to events that result from conversations facilitated by the messaging platform but where the events occur outside the messaging platform (or the social networking system). The event-related information may then be used for various purposes. For example, the event-related information may be used to generate a report for a party (e.g., the first party or the second party) identifying events that occurred involving the party resulting from conversations the party participated in using the messaging platform. For example, a report may be generated that identifies a set of one or more metrics associated with multiple events that involved the party. For example, a metric may include an amount of total value generated for the party from events that began as conversations using the messaging platform (including a breakdown of events occurring inside and outside of the messaging platform). As another example, a conversion rate report may be generated for a party identifying what percentage of conversations that the party participated in using the messaging platform the resulted in events. Various other information and metrics related to the events may also be provided via these reports.

According to certain embodiments, techniques may be provided for tracking events that occur outside of a messaging platform. The messaging platform may enable a conversation between a first party and a second party. While not intended to be limiting, the conversation may include one or more messages exchanged between the first party and the second party via the messaging platform. An occurrence of an event between the first party and the second party may be determined, the event occurring outside the messaging platform and resulting from the conversation. Information related to the event may be stored. In some embodiments, the information may be stored such that it is associated with the first party or the second party. This information may then be used to generate a report for the first party or for the second party, where the report comprises information related to the event.

In certain embodiments, the messaging platform may provide a graphical user interface with a user-selectable option (e.g., a button) for indicating the occurrence of the event. A party involved in a conversation via the messaging platform may select the user-selectable option to indicate that the event has occurred. In certain embodiments, upon selection of the user-selectable option, the messaging platform may display a graphical user interface that enables a party to enter information related to the event, such as when the event occurred, the services or goods involved in the event, the value exchanged (e.g., a sale amount) for the event, a location where the event occurred, and other information related to the event.

As another example, communication of a message between the parties related to the event and exchanged between the parties via the conversation via the messaging platform may be detected. For exchange, a message sent by one party to another party in the conversation may include a document (e.g., a receipt) that indicates the occurrence of the event. In certain embodiments, one or more machine learning models may be used to detect such a message and to determine that the document indicates the occurrence of an event. In some other embodiments, messages exchanges between the parties containing documents and the documents themselves may be analyzed based on a set of one or more criteria to determine the occurrence of the event. In one illustrative example, the set of one or more criteria may determine whether the document is of a particular document type.

In certain embodiments, information may be extracted from a document included in a message exchanged in a conversation between the parties. Based on the extracted information, the messaging platform may determine the occurrence of the event. When particular information related to the event cannot be determined from the information extracted from the document, a graphical user interface may be provided via the messaging platform for the first party or the second party to enter the particular information

As previously described, information related to an event may be stored such that the information is associated with the first party or the second party. A report may be generated for the first party based upon the stored information, where the report includes the information related to the event and potentially related to other events involving the first party that resulted from conversations via the messaging platform that the first party participated in. For example, if the first party is a seller of goods, a report generated for the first party may identify sales that occurred from conversations (e.g., sales pitches) made by the seller using the messaging platform. The report may include information identifying a conversion rate for the seller, such as what percentage of the conversations that the seller was involved in using the messaging platform results in actual sales for the seller, where the sales occurred outside the messaging platform (or the social networking system providing the messaging platform).

A report may also be generated for the second party. For example, if the second party is a buyer of goods, a report generated for identifying the buying events that the buyer was involved in where the goods were bought as a result of conversations via the messaging platform involving the buyer.

The foregoing, together with other features and examples, will be described in more detail below in the following specification, claims, and accompanying drawings.

DETAILED DESCRIPTION

The present disclosure relates generally to event tracking on a messaging platform, and more particularly to tracking events that result from a conversation on a messaging platform and that occur outside of the messaging platform.

Various inventive embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, code, or instructions executable by one or more processors, and the like, for event tracking. A first party and a second party may exchange messages via a messaging platform. The conversation between the parties via the messaging platform may result in the occurrence of an event, where the event occurs outside of the messaging platform. As a result, the messaging platform is unaware of the occurrences of such events. In certain embodiments, techniques are provided that enable the messaging platform to receive information regarding the occurrences of such events. This enables the messaging platform to associate events with conversations and the parties involved in the conversations.

In one embodiment, the messaging platform may provide a user-selectable option (e.g., a button) that enables a first party or a second party to indicate that an event involving the parties has occurred outside of the messaging platform. Upon selection of the user-selectable option, a user interface may be presented for the party selecting the option to input information related to the event. In some examples, information may be input as part of the same messaging platform conversation between the first and second parties.

In another embodiment, the messaging platform may be configured to detect when a document is exchanged in a conversation via the messaging platform. Upon detection of the document, the messaging platform may provide a user interface to a party of the conversation that enables the party to input information related to an event indicated by the document. While the user interface may be presented any time that a document is exchanged, in some embodiments, the user interface may be presented when it is determined that the document indicates an occurrence of the event.

In yet another embodiment, information may be extracted from a document exchanged between a first party and a second party in a conversation facilitated by a messaging platform. The extracted information may be used to determine whether an event has occurred between the parties outside of the messaging platform. The extracted information may be also used to determine values for attributes related to the event, such as the date when the event occurred, the amount of value exchanged as part of the event, and the like. In some embodiments, a user interface may be provided for one or both of the parties to input information related to the event, such as information that could not be determined from the information extracted from the document.

Accordingly, in various embodiments, a messaging platform (or a system communicating with or providing the messaging platform, such as a social networking system (SNS)) may receive and store information related to events that result from conversations facilitated by the messaging platform but where the events occur outside the messaging platform (or the social networking system). The event-related information may then be used for various purposes. For example, the event-related information may be used to generate a report for a party (e.g., the first party or the second party) identifying events that occurred involving the party resulting from conversations the party participated in using the messaging platform. For example, a report may be generated that identifies a set of one or more metrics associated with multiple events that involved the party. For example, a metric may include an amount of total value generated for the party from events that began as conversations using the messaging platform (including a breakdown of events occurring inside and outside of the messaging platform). As another example, a conversion rate report may be generated for a party identifying what percentage of conversations that the party participated in using the messaging platform the resulted in events. Various other information and metrics related to the events may also be provided via these reports.

According to certain embodiments, techniques may be provided for tracking events that occur outside of a messaging platform. The messaging platform may enable a conversation between a first party and a second party. While not intended to be limiting, the conversation may include one or more messages exchanged between the first party and the second party via the messaging platform. An occurrence of an event between the first party and the second party may be determined, the event occurring outside the messaging platform and resulting from the conversation. Information related to the event may be stored. In some embodiments, the information may be stored such that it is associated with the first party or the second party. This information may then be used to generate a report for the first party or for the second party, where the report comprises information related to the event.

In certain embodiments, the messaging platform may provide a graphical user interface with a user-selectable option (e.g., a button) for indicating the occurrence of the event. A party involved in a conversation via the messaging platform may select the user-selectable option to indicate that the event has occurred. In certain embodiments, upon selection of the user-selectable option, the messaging platform may display a graphical user interface that enables a party to enter information related to the event, such as when the event occurred, the services or goods involved in the event, the value exchanged (e.g., a sale amount) for the event, a location where the event occurred, and other information related to the event.

As another example, communication of a message between the parties related to the event and exchanged between the parties via the conversation via the messaging platform may be detected. For exchange, a message sent by one party to another party in the conversation may include a document (e.g., a receipt) that indicates the occurrence of the event. In certain embodiments, one or more machine learning models may be used to detect such a message and to determine that the document indicates the occurrence of an event. In some other embodiments, messages exchanges between the parties containing documents and the documents themselves may be analyzed based on a set of one or more criteria to determine the occurrence of the event. In one illustrative example, the set of one or more criteria may determine whether the document is of a particular document type.

In certain embodiments, information may be extracted from a document included in a message exchanged in a conversation between the parties. Based on the extracted information, the messaging platform may determine the occurrence of the event. When particular information related to the event cannot be determined from the information extracted from the document, a graphical user interface may be provided via the messaging platform for the first party or the second party to enter the particular information

As previously described, information related to an event may be stored such that the information is associated with the first party or the second party. A report may be generated for the first party based upon the stored information, where the report includes the information related to the event and potentially related to other events involving the first party that resulted from conversations via the messaging platform that the first party participated in. For example, if the first party is a seller of goods, a report generated for the first party may identify sales that occurred from conversations (e.g., sales pitches) made by the seller using the messaging platform. The report may include information identifying a conversion rate for the seller, such as what percentage of the conversations that the seller was involved in using the messaging platform results in actual sales for the seller, where the sales occurred outside the messaging platform (or the social networking system providing the messaging platform).

A report may also be generated for the second party. For example, if the second party is a buyer of goods, a report generated for identifying the buying events that the buyer was involved in where the goods were bought as a result of conversations via the messaging platform involving the buyer.

FIG. 1is a simplified flowchart depicting processing performed for tracking events according to certain embodiments. The processing depicted inFIG. 1may be implemented in software (e.g., code, instructions, program) executed by one or more processing units (e.g., processors, cores) of the respective systems, hardware, or combinations thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented inFIG. 1and described below is intended to be illustrative and non-limiting. AlthoughFIG. 1depicts the various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain embodiments, the steps may be performed in some different order or some steps may also be performed in parallel.

In the embodiment depicted inFIG. 1, the processing may be triggered at110when a conversation between a first party and a second party is enabled via a messaging platform. Enabling the conversation may include sending messages between the first party and the second party and/or providing graphical user interfaces for displaying the messages on devices associated with the first party and the second party. The conversation may include one or more messages exchanged between the first party and the second party via the messaging platform, as depicted in and described below forFIGS. 3, 4A, 7, and 11A. While description herein may reference a first party and a second party, it should be recognized that a conversation may include more than two parties.

The messaging platform may be provided by a social networking system (SNS), as described below with reference toFIG. 14. However, it should be recognized that the messaging platform may be separate from the SNS. In addition, when this disclosure describes steps or operations performed by either the messaging platform the SNS, it should be recognized that the steps or operations may be performed by the messaging platform, the SNS, a different server, a device associated with the first party, a device associated with the second party, or any combination thereof. When the messaging platform is provided by the SNS, the first party and/or the second party may each be an entity (e.g., a user, an organization, or the like) that is registered with the SNS.

At120, an occurrence of an event between the first party and the second party may be determined. The event (sometimes referred to as a conversion event) may occur outside the messaging platform and result from the conversation. For example, a party may cause the event to occur in response to a message of the conversation. Prior to embodiments described herein, the messaging platform would not have any way to track an event that occurred outside of the messaging platform.

For one illustrative example, the first party may send a message to the second party, the message requesting that the second party exchange value for a product and/or service provided by the second party. The value may be sent to the second party via a channel separate from the messaging platform. For example, the second party may contact a bank to send funds from the bank to the first party. The second party may then send a message to the first party, indicating completion of the transfer. Based on the message, it may be determined that a conversion event occurred. While there are many ways for the occurrence of the event to be determined, a few examples will be described below with respect toFIGS. 2, 5, and 9.

FIG. 2is a simplified flowchart depicting processing performed for determining an occurrence of an event based on user feedback according to certain embodiments. The processing depicted inFIG. 2may be implemented in software (e.g., code, instructions, program) executed by one or more processing units (e.g., processors, cores) of the respective systems, hardware, or combinations thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented inFIG. 2and described below is intended to be illustrative and non-limiting. AlthoughFIG. 2depicts the various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain embodiments, the steps may be performed in some different order or some steps may also be performed in parallel.

In the embodiment depicted inFIG. 2, the processing may be triggered at210when a first graphical user interface with a user-selectable option is provided via a messaging platform, the user-selectable option for indicating an occurrence of an event outside of the messaging platform. The messaging platform may be enabling a conversation between a first party and a second party, where the conversation includes one or more messages exchanged between the first party and the second party via the messaging platform as described above forFIG. 1. In some embodiments, at least some of the one or more messages may be presented along with the user-selectable option such that a party may view at least a portion of a message while selecting the user-selectable option.

FIG. 3depicts an example of graphical user interface (GUI)300that includes user-selectable option330for indicating an occurrence of an event outside of the messaging platform according to certain embodiments. As described above, GUI300may be associated with a conversation between a first party and a second party. The conversation may be provided via the messaging platform. User-selectable option330may be visible at all times during the conversation. In some embodiments, user-selectable option330may only be visible to one of the parties (i.e., the first party or the second party). In other embodiments, user-selectable option330may be visible to both parties (i.e., the first party and the second party).

In one illustrative example, the conversation can begin with a message from the second party (e.g., first message310) that states “Hey! I'd like to buy 3 white shirts.” The conversation may further include a response to first message310(e.g., second message320) from the first party that states “Great, can you send me $300 to my bank account? K Bank Account number 12929395.” As can be seen, the conversation may be associated with a transaction for 3 white shirts.

FIG. 4Adepicts an example of graphical user interface (GUI)400that includes user-selectable option440for indicating an occurrence of an event outside of the messaging platform according to certain embodiments. Similar to GUI300, GUI400may be associated with a conversation between a first party and a second party. The second party may be requesting to order a product or service (such as is included in first message410). The first party may indicate acceptance of an offer made by the second party (such as is included in second message420). The second party may then send a message that includes a confirmation of a transfer from the second party to the first party (e.g., as illustrated in third message430). And similarly as described above forFIG. 3, GUI400may include user-selectable option440. While user-selectable option440is different than user-selectable option330, both may indicate the occurrence of the event (e.g., that a transaction has completed).

FIG. 4Bdepicts an example of GUI450, which may result from selection of user selectable option440inFIG. 4A. GUI450may include portion460, which is presented on top of at least a portion of GUI400. Portion460may include multiple user-selectable options, each user-selectable option for indicating a different event. For example, first user-selectable option470may indicate that a first party wishes for a second party to send value to the first party. Second user-selectable option480may indicate that the first party has received the value sent by the second party (sometimes referred to as a conversion event).

Referring back toFIG. 2, at220, the processing may further include receiving a signal indicating selection of the user-selectable option by a party (e.g., the first party or the second party). As described above, selection of the user-selectable option may indicate an occurrence of an event outside of the messaging platform.

At230, a second GUI may be provided via the messaging platform. The second GUI may be for enabling the party to enter information related to the event. Examples of information that may be entered include a value associated with the event, a description of the event, or the like. Then, at240, the information related to the event may be received via the second graphical user interface. For example, the party may cause the information related to the event to be sent to the messaging platform.

While the embodiments described inFIGS. 2, 3, 4A, and 4Bpresent a user-selectable option at all times during a conversation, some embodiments described herein determine when to present the user-selectable option. For example, one or more messages may be analyzed to determine a likelihood that an event occurred outside of the messaging platform. If it is likely that the event occurred, the user-selectable option may be provided to one or more parties of the conversation.

FIG. 5is a simplified flowchart depicting processing performed for determining an occurrence of an event based on a document in a message according to certain embodiments. The processing depicted inFIG. 5may be implemented in software (e.g., code, instructions, program) executed by one or more processing units (e.g., processors, cores) of the respective systems, hardware, or combinations thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented inFIG. 5and described below is intended to be illustrative and non-limiting. AlthoughFIG. 5depicts the various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain embodiments, the steps may be performed in some different order or some steps may also be performed in parallel.

In the embodiment depicted inFIG. 5, the processing may be triggered at510when communication of a message with a document is detected in a conversation between a first party and a second party via a messaging platform. The document may be an image, a portable file document (PDF), a word document, a spreadsheet, a Power Point document, a text file, or the like.FIGS. 6A and 6Beach depict an example of a document indicating an occurrence of an event. The document inFIG. 6Aillustrates a photograph of a receipt for a transfer of value from a first bank to a second bank. The document inFIG. 6Billustrates a screenshot of a receipt for a transfer of value from a first bank to a second bank. While these figures depict possible documents, it should be recognized that other documents may indicate an occurrence of an event.

Referring back toFIG. 5, at520, it may be determined that the message is indicative of an occurrence of an event outside the messaging platform. For example, the message and/or the document may be input to a machine learning model to determine whether the message is indicative of the occurrence of the event outside of the messaging platform. In such an example, an output of the machine learning model may be a classification of whether the event occurred outside of the messaging platform (e.g., that the document indicates an occurrence of the event). For example, metadata associated with the document, a document type, a document name, or the like may be used by the machine learning model to classify the document. For another example, multiple documents that are indicative of an occurrence of an event may be used as training data for a machine learning model such that the machine learning model may classify documents as indicative of an occurrence of an event. In such an example, multiple documents that are not indicative of an occurrence of an event may also be used as input (with labels indicating which documents are indicative and which documents are not indicative of an event) for training the machine learning model. By having documents with corresponding labels, the machine learning model may learn how to distinguish between documents that indicate an occurrence of an event and documents that do not indicate an occurrence of an event. In one illustrative example, the machine learning model may be used to recognize receipts. In some examples, instead of a machine learning model, a set of one or more criteria may be used to determine whether the message is indicative of the occurrence of the event outside the messaging platform. The one or more criteria may be similar to that which the machine learning model uses in its determination.

In some examples, rather than just using the message and/or the document, context around the message and/or the document may be used to determine whether an event occurred outside of the messaging platform. For example, messages sent prior to the message or after the message may be used to determine whether the event occurred outside of the messaging platform. Other information may also be used, such as information known by a social networking system regarding either the first party or the second party.

In response to determining that the message is indicative of the occurrence of the event, a user-selectable option (similar to the user-selectable option described inFIG. 3) may be presented in a graphical user interface. However, unlike inFIG. 3, this user-selectable option may only be visible after it has been determined that the message is indicative of the occurrence of the event.

FIG. 7depicts an example of graphical user interface700that includes user-selectable option730that is presented in response to determining an occurrence of an event outside of a messaging platform. Graphical user interface700may include a conversation between a first party and a second party that is provided be a messaging platform. The conversation may include first message710, which states “Here's the payment.” The conversation may further include second message730, which includes a document (e.g., an image, a portable file document (PDF), a word document, a spreadsheet, a Power Point document, a text file, or the like).

Based on first message710and/or second message730, it may be determined that an occurrence of an event occurred outside of the messaging platform. For example, first message710may indicate that a payment has been provided to a party. For another example, the document in second message730may be determined to be indicative of the occurrence of the event. In such an example, the document may be a receipt for the second party paying the first party $300 using a service outside of the messaging platform. For example, the second party may have used an application associated with their bank to send the $300 to the first party. User-selectable option730may be used to confirm that the event has occurred.

By selecting user-selectable option730, a graphical user interface (as described below) may be presented to either enter information related to the event or present information extracted from the document.

Referring back toFIG. 5, at530, a graphical user interface (GUI) may be provided via the messaging platform to enable a party to enter information related to the event. Examples of information related to the event include a value, a description, a name of one or more parties, a time stamp, a name of a bank, or the like. At540, the information related to the event may be received via the GUI.

FIG. 8depicts an example of graphical user interface (GUI)800for entering information related to an event according to certain embodiments. GUI800may be presented after it is determined that the event occurred (e.g., when user-selectable option330is selected, when it is determined that a message indicated an occurrence of the event, or the like). GUI800may allow a party to enter value810associated with the event. GUI800may also allow a party to enter description820for the event. After value810and/or description820is entered into GUI800, confirmation user-selectable option830may be selected to cause value810and/or description820to be stored such that it is associated with a first party and/or a second party.

FIG. 9is a simplified flowchart depicting processing performed for determining an occurrence of an event based on extracted information from a document in a message according to certain embodiments. The processing depicted inFIG. 9may be implemented in software (e.g., code, instructions, program) executed by one or more processing units (e.g., processors, cores) of the respective systems, hardware, or combinations thereof. The software may be stored on a non-transitory storage medium (e.g., on a memory device). The method presented inFIG. 9and described below is intended to be illustrative and non-limiting. AlthoughFIG. 9depicts the various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In certain embodiments, the steps may be performed in some different order or some steps may also be performed in parallel.

In the embodiment depicted inFIG. 9, the processing may be triggered at910when communication of a message between a first party and a second party is detected, the message including a document and communicated via a messaging platform. As described above, examples of the document may be depicted inFIGS. 7 and 8.

At920, information is extracted from the document. The information may include pixel values, a title of the document, a value associated with an occurrence of an event outside of the messaging platform, a description of the event, a name of a bank, a time stamp, or any other information that may be extracted from the document. While it should be recognized that there are many ways to recognize information from a document, in one example an automatic content recognition technique may be used.

At930, whether an event occurred may be determined based on the extracted information. For example, the extracted information and/or the document may be input to a machine learning model to determine whether an event occurred outside of the messaging platform. For example, multiple examples of extracted information that are indicative of an occurrence of an event may be used as training data for a machine learning model such that the machine learning model may determine whether an event occurred. In some examples, instead of a machine learning model, a set of one or more criteria may be used to determine whether an event occurred outside the messaging platform. The one or more criteria may be similar to that which the machine learning model uses in its determination.

At940, it may be determined whether more information is needed regarding the event. For example, some information related to the event may be missing from the extracted information. If no more information is needed, a first user interface may be displayed at950, the first user interface enabling a party to confirm the accuracy of the extracted information.

If it is determined that more information is needed, a second user interface may be displayed at960, the second user interface enabling a party to enter additional information related to the event. The additional information may correspond to the information that is needed in addition to the extracted information.

At970, the additional information related to the event may be received via the second user interface. Then, after the additional information is received, the first user interface may be displayed at980, the first user interface enabling a party to confirm the accuracy of the extracted information and the additional information.

FIG. 10depicts an example of graphical user interface (GUI)1000for confirming information related to an event according to certain embodiments. GUI1000may be presented after information is extracted from a document in a message that is communicated between a first party and a second party via a messaging platform. In particular, information included in GUI1000may be identified from the extracted information. For example value1010may be extracted directly from the document, such that a user does not have to enter the amount in using GUI1000. In addition, description1020, which may describe what event occurred outside of the messaging platform, may be directly extracted from the document without a user having to enter a description. GUI1000may also be presented after information is entered by a party.

GUI1000may further include confirmation user-selectable option1030. In response to selection of confirmation user-selectable option1030, value1010and/or description1020(referred to as stored information) may be stored such that the stored information is associated with the first party and/or the second party. While GUI1000illustrates two types of information, it should be recognized that more or fewer types of information may be included in GUI1000. For example, a name of banks, a time stamp, a name of a party involved, or other information related to an event may be included in GUI1000. WhileFIG. 10is described afterFIG. 9, it should be recognized that the extracted information may be used for providing content to be displayed in GUI1000and not for identifying whether the document is indicative of an occurrence of an event. For example, the document may be determined to be indicative of an event based on information other than what is extracted from the document, such as described above inFIG. 5.

FIG. 11Adepicts an example of confirmation message1120that was sent to a party of a conversation via a messaging platform according to certain embodiments. The conversation may be between a first party and a second party, where confirmation message1120was sent to the first party and/or the second party in response to the messaging platform (or a system associated with the messaging platform (e.g., a social networking system)) determining that an event occurred outside of the messaging platform.

In one illustrative example, the second party may have sent first message1110, which included a document. In response to first message1110, it may have been determined that an event occurred outside of the messaging platform. For example, a party of the conversation may have indicated using a user-selectable option that the event occurred. For another example, the messaging platform may have determined that the event occurred based on first message1110.

Confirmation message1120may be sent to the party such that another party of the conversation might not see confirmation message1120. For example, confirmation message1120may be visible to the first party but not the second party.

Confirmation message1120may include information related to the event. For example, confirmation message1120may include value1122, status1124, or the like. In such an example, status1124may indicate information regarding the event. Confirmation message1120may further include user-selectable option1126for viewing more details related to the event, as shown inFIG. 11B.

FIG. 11Bdepicts an example of page1130for presenting details related to an event according to certain embodiments. The details may have been extracted from a document included in a message in a conversation between a first party and a second party via a messaging platform. The details may have also been entered by a party of the conversation (e.g., the first party or the second party). The details may include a name of one or more of the parties (reference number1140), a value1150, a description1160, a status1170, order number1180, or the like. However, it should be recognized that more or fewer details may be included in page1130.

Referring back toFIG. 1, at130, the processing may further include performing one or more actions based on information related to the event. For example, the information may be stored in a database, such that the information is associated with the first party or the second party. In another example, at least a portion of the information may be included in a message sent to the first party or the second party (as illustrated inFIG. 11A). In yet another example, the information may be aggregated, summarized, or otherwise collected with other information to be presented in the form of a report to the first party or the second party.

FIG. 12depicts an example of a report for a party according to certain embodiments. The report includes information regarding orders that occurred between a timeframe of March 7th and March 13th. In one illustrative example, the report indicates that the party has completed100orders during the timeframe. The report may also indicate that the party has earned $22,140 from the100orders. Accordingly, the report has aggregated the earnings from each of the100orders to identify the amount earned from the100orders.

While the report illustrated inFIG. 12indicates two types of metrics that may be identified from events, it should be recognized that there may be more or fewer metrics that may or may not include the two types of metrics described above. For example, a metric may include a number of parties that converse with a party, a number of parties that reach a conversion event with the party, information related to the conversion event, or the like. In one illustrative example, if the party is a seller of goods, a report generated for the first party may identify sales that occurred from conversations (e.g., sales pitches) made by the seller using the messaging platform. The report may also include information identifying a conversion rate for the seller, such as what percentage of the conversations that the seller was involved in using the messaging platform results in actual sales for the seller, where the sales occurred outside the messaging platform (or the social networking system providing the messaging platform).

FIG. 13depicts another example of a report for a party according to certain embodiments. The report depicted inFIG. 13illustrates events that occurred inside of a messaging platform and events that occurred outside of the messaging platform. For example, the messaging platform (or a social networking system that provides the messaging platform) may include methods for performing events. As described above, it may be a more difficult to identify when an event occurred when the event did not occur on the messaging platform. Accordingly, techniques described herein provide techniques for identifying when an event has occurred outside of the messaging platform.

FIG. 14is a simplified block diagram of a distributed system for tracking events according to certain embodiments. The distributed system may include one or more systems, including social networking system (SNS)1410, communicatively coupled with one or more user devices (e.g., first device1460and second device1480). In certain embodiments, the one or more user devices may be communicatively coupled with SNS1410via one or more communication networks (e.g., communication network1470and communication network1490). While communication network1470and communication network1490are illustrated as separate networks inFIG. 14, it should be recognized that they may be the same network. Examples of communication networks include, without restriction, the Internet, a wide area network (WAN), a local area network (LAN), an Ethernet network, wireless wide-area networks (WWANs), wireless local area networks (WLANs), wireless personal area networks (WPANs), a public or private network, a wired network, a wireless network, and the like, and combinations thereof. Different communication protocols may be used to facilitate communications including both wired and wireless protocols such as IEEE 802.XX suite of protocols, TCP/IP, IPX, SAN, AppleTalk®, Bluetooth®, InfiniBand, RoCE, Fiber Channel, Ethernet, User Datagram Protocol (UDP), Asynchronous Transfer Mode (ATM), token ring, frame relay, High Level Data Link Control (HDLC), Fiber Distributed Data Interface (FDDI), and/or Point-to-Point Protocol (PPP), and others. A WWAN may be a network using an air interface technology, such as, a code division multiple access (CDMA) network, a Time Division Multiple Access (TDMA) network, a Frequency Division Multiple Access (FDMA) network, an OFDMA network, a Single-Carrier Frequency Division Multiple Access (SC-FDMA) network, a WiMax (IEEE 802.16), and so on. A WLAN may include an IEEE 802.11x network (e.g., a Wi-Fi network). A WPAN may be a Bluetooth network, an IEEE 802.15x, or some other types of network.

The distributed system depicted inFIG. 14is merely an example and is not intended to unduly limit the scope of inventive embodiments recited in the claims. One of ordinary skill in the art would recognize many possible variations, alternatives, and modifications. For example, in some implementations, the distributed system may have more or fewer systems than those shown inFIG. 14, may combine two or more systems, or may have a different configuration or arrangement of systems.

The user devices depicted inFIG. 14may sometimes be referred to as a client device, or simply a client. A user device (e.g., first device1460or second device1480) may be a computing device, such as, for example, a mobile phone, a smart phone, a personal digital assistant (PDA), a tablet computer, an electronic book (e-book) reader, a gaming console, a laptop computer, a netbook computer, a desktop computer, a thin-client device, a workstation, etc.

One or more applications (“apps”) may be hosted and executed by first device1460or second device1480. The apps may be web browser-based applications or other types of applications. In the example embodiment depicted inFIG. 14, first device1460and second device1480each host and execute a messaging application, which enables a user to communicate with other users via messaging platform1420of SNS1410.

As illustrated inFIG. 14, messaging platform1420may cause user interfaces to be presented by each of first device1460and second device1480. For example, a first interface presented by first device1460may indicate that a conversation is with second party1462. The first interface may also include first message1464and second message1466. Similarly, a second interface presented by second device1480may indicate that a conversation is with first party1482. The second interface may also include first message1464and second message1466, which correspond to the messages presented in the first interface.

In the embodiment depicted inFIG. 14, SNS1410includes messaging platform1420for enabling a conversation between a first party (associated with first device1460) and a second party (associated with second device1480). The conversation may include one or more messages exchanged between the first party and the second party via messaging platform1420. For example, second device1480may have sent first message1464to the first party. First device1460may receive first message1464through at least communication network1470. First message1464may include a request to buy a pair of pants. The first party, using first device1460, may send a response to first message1464(i.e., second message1466). The response may indicate a price for the pair of pants. Second device1480may receive second message1466through at least communication network1490.

Messaging platform1420may further include event system1430for determining and handling an occurrence of an event inside and/or outside of messaging platform1420. While the occurrence of the event may be determined in many ways, examples for this process include presenting a user-selectable option to a party for indicating that the event occurred, using a set of one or more criteria or machine learning model for determining (based on one or more messages exchanged between the first party and the second party) whether the event occurred, or extracting information from a document included in a message that indicates that the event occurred.

In embodiments where information is extracted from a document, messaging platform1420may further include document recognition subsystem1440. Document recognition subsystem1440may take as input a document included in a message. Based on the document, document recognition subsystem1440may identify whether an event has occurred outside of messaging platform1420. While document recognition subsystem1440may utilize content of the document, it should also be recognized that metadata of the document may be used in addition to or instead of the content.

After an event is determined, information related to the event may be stored in storage1450such that the information is associated with the first party and/or the second party. WhileFIG. 14illustrates storage1450included in SNS1410, it should be recognized that storage1450may be remote from SNS1410.

FIG. 15illustrates an example of computer system1500, which may be used to implement certain embodiments described herein. For example, in some embodiments, computer system1500may be used to implement any of the systems, servers, devices, or the like described above. As shown inFIG. 15, computer system1500includes various subsystems including processing subsystem1504that communicates with a number of other subsystems via bus subsystem1502. These other subsystems may include processing acceleration unit1506, I/O subsystem1508, storage subsystem1518, and communications subsystem1524. Storage subsystem1518may include non-transitory computer-readable storage media including storage media1522and system memory1510.

Bus subsystem1502provides a mechanism for letting the various components and subsystems of computer system1500communicate with each other as intended. Although bus subsystem1502is shown schematically as a single bus, alternative embodiments of bus subsystem1502may utilize multiple buses. Bus subsystem1502may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a local bus using any of a variety of bus architectures, and the like. For example, such architectures may include an Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, which may be implemented as a Mezzanine bus manufactured to the IEEE P1386.1 standard, and the like.

Processing subsystem1504controls the operation of computer system1500and may comprise one or more processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). The processors may include single core and/or multicore processors. The processing resources of computer system1500may be organized into one or more processing units1532,1534, etc. A processing unit may include one or more processors, one or more cores from the same or different processors, a combination of cores and processors, or other combinations of cores and processors. In some embodiments, processing subsystem1504may include one or more special purpose co-processors such as graphics processors, digital signal processors (DSPs), or the like. In some embodiments, some or all of the processing units of processing subsystem1504may be implemented using customized circuits, such as application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs).

In some embodiments, the processing units in processing subsystem1504may execute instructions stored in system memory1510or on computer readable storage media1522. In various embodiments, the processing units may execute a variety of programs or code instructions and may maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed may be resident in system memory1510and/or on computer-readable storage media1522including potentially on one or more storage devices. Through suitable programming, processing subsystem1504may provide various functionalities described above. In instances where computer system1500is executing one or more virtual machines, one or more processing units may be allocated to each virtual machine.

In certain embodiments, processing acceleration unit1506may optionally be provided for performing customized processing or for off-loading some of the processing performed by processing subsystem1504so as to accelerate the overall processing performed by computer system1500.

Storage subsystem1518provides a repository or data store for storing information and data that is used by computer system1500. Storage subsystem1518provides a tangible non-transitory computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Storage subsystem1518may store software (e.g., programs, code modules, instructions) that when executed by processing subsystem1504provides the functionality described above. The software may be executed by one or more processing units of processing subsystem1504. Storage subsystem1518may also provide a repository for storing data used in accordance with the teachings of this disclosure.

Storage subsystem1518may include one or more non-transitory memory devices, including volatile and non-volatile memory devices. As shown inFIG. 15, storage subsystem1518includes system memory1510and computer-readable storage media1522. System memory1510may include a number of memories including a volatile main random access memory (RAM) for storage of instructions and data during program execution and a non-volatile read only memory (ROM) or flash memory in which fixed instructions are stored. In some implementations, a basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer system1500, such as during start-up, may typically be stored in the ROM. The RAM typically contains data and/or program modules that are presently being operated and executed by processing subsystem1504. In some implementations, system memory1510may include multiple different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), and the like.

By way of example, and not limitation, as depicted inFIG. 15, system memory1510may load application programs1512that are being executed, which may include various applications such as Web browsers, mid-tier applications, relational database management systems (RDBMS), etc., program data1514, and operating system1516.

In certain embodiments, storage subsystem1518may also include computer-readable storage media reader1520that may further be connected to computer-readable storage media1522. Reader1520may receive and be configured to read data from a memory device such as a disk, a flash drive, etc.

In certain embodiments, computer system1500may support virtualization technologies, including but not limited to virtualization of processing and memory resources. For example, computer system1500may provide support for executing one or more virtual machines. In certain embodiments, computer system1500may execute a program such as a hypervisor that facilitated the configuring and managing of the virtual machines. Each virtual machine may be allocated memory, compute (e.g., processors, cores), I/O, and networking resources. Each virtual machine generally runs independently of the other virtual machines. A virtual machine typically runs its own operating system, which may be the same as or different from the operating systems executed by other virtual machines executed by computer system1500. Accordingly, multiple operating systems may potentially be run concurrently by computer system1500.

Communications subsystem1524provides an interface to other computer systems and networks. Communications subsystem1524serves as an interface for receiving data from and transmitting data to other systems from computer system1500. For example, communications subsystem1524may enable computer system1500to establish a communication channel to one or more client devices via the Internet for receiving and sending information from and to the client devices. For example, when computer system1500is used to implement social networking system1410depicted inFIG. 14, communication subsystem1524may be used to communicate with first device1460or second device1480.

Communication subsystem1524may support both wired and/or wireless communication protocols. For example, in certain embodiments, communications subsystem1524may include radio frequency (RF) transceiver components for accessing wireless voice and/or data networks (e.g., using cellular telephone technology, advanced data network technology, such as 3G, 4G or EDGE (enhanced data rates for global evolution), WiFi (IEEE 802.XX family standards, or other mobile communication technologies, or any combination thereof), global positioning system (GPS) receiver components, and/or other components. In some embodiments, communications subsystem1524may provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.

Communication subsystem1524may receive and transmit data in various forms. For example, in some embodiments, in addition to other forms, communications subsystem1524may receive input communications in the form of structured and/or unstructured data feeds1526, event streams1528, event updates1530, and the like. For example, communications subsystem1524may be configured to receive (or send) data feeds1526in real-time from users of social media networks and/or other communication services such as web feeds and/or real-time updates from one or more third party information sources.

In certain embodiments, communications subsystem1524may be configured to receive data in the form of continuous data streams, which may include event streams1528of real-time events and/or event updates1530, that may be continuous or unbounded in nature with no explicit end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measuring tools (e.g. network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.

Communications subsystem1524may also be configured to communicate data from computer system1500to other computer systems or networks. The data may be communicated in various different forms such as structured and/or unstructured data feeds1526, event streams1528, event updates1530, and the like to one or more databases that may be in communication with one or more streaming data source computers coupled to computer system1500.

Computer system1500may be one of various types, including a handheld portable device, a wearable device, a personal computer, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system1500depicted inFIG. 15is intended only as a specific example. Many other configurations having more or fewer components than the system depicted inFIG. 15are possible. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.

Some embodiments described herein make use of social networking data that may include information voluntarily provided by one or more users. In such embodiments, data privacy may be protected in a number of ways.

For example, the user may be required to opt in to any data collection before user data is collected or used. The user may also be provided with the opportunity to opt out of any data collection. Before opting in to data collection, the user may be provided with a description of the ways in which the data will be used, how long the data will be retained, and the safeguards that are in place to protect the data from disclosure.

Any information identifying the user from which the data was collected may be purged or disassociated from the data. In the event that any identifying information needs to be retained (e.g., to meet regulatory requirements), the user may be informed of the collection of the identifying information, the uses that will be made of the identifying information, and the amount of time that the identifying information will be retained. Information specifically identifying the user may be removed and may be replaced with, for example, a generic identification number or other non-specific form of identification.

Once collected, the data may be stored in a secure data storage location that includes safeguards to prevent unauthorized access to the data. The data may be stored in an encrypted format. Identifying information and/or non-identifying information may be purged from the data storage after a predetermined period of time.

Although particular privacy protection techniques are described herein for purposes of illustration, one of ordinary skill in the art will recognize that privacy protected in other manners as well.

In the preceding description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of examples of the disclosure. However, it should be apparent that various examples may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order to not obscure the examples in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may have been shown without necessary detail in order to avoid obscuring the examples. The figures and description are not intended to be restrictive.

The description provides examples only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the description of the examples provides those skilled in the art with an enabling description for implementing an example. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the disclosure as set forth in the appended claims.

The term “machine-readable storage medium” or “computer-readable storage medium” includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing, containing, or carrying instruction(s) and/or data. A machine-readable storage medium or computer-readable storage medium may include a non-transitory medium in which data may be stored and that does not include carrier waves and/or transitory electronic signals propagating wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as compact disk (CD) or digital versatile disk (DVD), flash memory, memory or memory devices. A computer-program product may include code and/or machine-executable instructions that may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements.

Furthermore, examples may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a machine-readable medium. One or more processors may execute the software, firmware, middleware, microcode, the program code, or code segments to perform the necessary tasks.

Systems depicted in some of the figures may be provided in various configurations. In some embodiments, the systems may be configured as a distributed system where one or more components of the system are distributed across one or more networks such as in a cloud computing system.

Where components are described as being “configured to” perform certain operations, such configuration may be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.

The terms and expressions that have been employed in this disclosure are used as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof. It is recognized, however, that various modifications are possible within the scope of the systems and methods claimed. Thus, it should be understood that, although certain concepts and techniques have been specifically disclosed, modification and variation of these concepts and techniques may be resorted to by those skilled in the art, and that such modifications and variations are considered to be within the scope of the systems and methods as defined by this disclosure.

Although specific embodiments have been described, various modifications, alterations, alternative constructions, and equivalents are possible. Embodiments are not restricted to operation within certain specific data processing environments, but are free to operate within a plurality of data processing environments. Additionally, although certain embodiments have been described using a particular series of transactions and steps, it should be apparent to those skilled in the art that this is not intended to be limiting. Although some flowcharts describe operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure. Various features and aspects of the above-described embodiments may be used individually or jointly.

Further, while certain embodiments have been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also possible. Certain embodiments may be implemented only in hardware, or only in software, or using combinations thereof. In one example, software may be implemented as a computer program product containing computer program code or instructions executable by one or more processors for performing any or all of the steps, operations, or processes described in this disclosure, where the computer program may be stored on a non-transitory computer readable medium. The various processes described herein may be implemented on the same processor or different processors in any combination.

Specific details are given in this disclosure to provide a thorough understanding of the embodiments. However, embodiments may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the embodiments. This description provides example embodiments only, and is not intended to limit the scope, applicability, or configuration of other embodiments. Rather, the preceding description of the embodiments will provide those skilled in the art with an enabling description for implementing various embodiments. Various changes may be made in the function and arrangement of elements.