Limitations to storing profile data retrieved from LinkedIn API - linkedin

Is it allowed to store a profile's company name as provided by LinkedIn Profile API?
The Terms of Use refer to certain limitations when it comes to storing retrieved data and it's not clear to me whether this particular datum is allowed or not.
First, when they refer to Profile Data that can be stored only a few fields are mentioned (name, photo, headline, contact information, experience, education, summary, and location); is that meant to be a comprehensive list?
And second, they explicitly exclude companies but I'm not sure whether they refer to data provided by the Profile API (positions in Basic Profile Fields) or data retrieved from the Profile Company API.
Any advice?
References to the Terms of Use
Introduction / Scope and Intent / Self-Service Program
You cannot use our self-service program [...], if your Application [...] will store or export any data from LinkedIn other than a LinkedIn member’s profile data (name, photo, headline, contact information, experience, education, summary, and location). [...]
And:
Act Professionally / Store Content Only As Allowed / Member Profile Data
You may store a user’s Profile Data if you have the consent of the user to do so [...]. “Profile Data” means the name, photo, headline, contact information, experience, education, summary, and location of a LinkedIn member. Profile Data excludes connections, network updates, job listings, groups, companies, and any other Content.

As you've referenced from the Terms of Use, member profile data contains the following pieces of information:
Name
Photo
Headline
Contact Information
Experience
Education
Summary
Location
And it excludes:
Connections
Network Updates
Job Listings
Groups
Companies
Other Content
Looking at these lists, we can take Experience as it's used on LinkedIn to refer to the role held by the user at a company, and so you would naturally have access to the name of the company.
The Platform Guidelines, point 3.2:
[..] You may only store the profile of that person, not the profile data of that person's connections, network updates, or other network information.
Looking at the API documentation for Profile Fields, in the sub-sections referring to Positions and Company, you can see that:
Positions are structured objects returned as part of profile.
Including the following fields:
Job title
Summary
Company
Company is a structured object returned as part of profile.
Not used directly with people calls, but used in position calls.
Including the following fields:
Company name
Company industry
So you should be fine to use this information.

Related

Adobe Audience Manager External data

At my organization we are starting to use Adobe Audience Manager. We need to read online data from the website, but also to load data from our private database. Today, we do it by using the FTP, but it actually takes almost 3 days to load all the information so we can use it, which is a lot of time for us. I would like to know which is the best way or some alternatives so we can load information in a more agile and fast way, and ideally to read ir in the most real time possible from other sources (like our database or similar).
thanks a lot for your help
AAM offline data can be uploaded either on an FTP location or to an AWS S3 bucket, and unfortunately both of them take from 12 to 24 hours to load on AAM (Adobe Audience Manager), and then it takes another 12 to 24 hours to load them into your DSP (Demand Side Platform).
Given that the only real-time like signals in AAM (that I know of) comes from the online datasources, the best way to achieve your requirement is to do the following:
Send as much information as possible from the online channel channel.
Build an integrate between your CRM data (database in your case) and the online data (user behaviour data on your website).
The CRM data should contain the user details that do not change much, such as demographics (age, gender, ...etc.), and it should also contain the data that are collected via the non-online channels (e.g. retail purchases, customer service phone calls, ...etc.). On the other hand, the online data should contain all the user behaviour data, collected from the online channel. For example, the user search parameters, visited page names, purchased items, clicked links, …etc.
The integration between the online and CRM data can be done by using the same user ID in both activities. The following diagram should give you a high level view of integration. Simple AAM diagram
Here is an example of passing the user ID and online behavior data to AAM
var user_id = "<add your website user ID here>";//ex: user1234
//Add all your online data here
var my_object = {
color : "blue",
price : "900",
page_name : "cart details"
};
//Create the Dil object
var adobe_dil = DIL.create({
partner : "<partner name goes here>",
declaredId : {
dpid : '<add your online data source ID here>' ,
dpuuid : user_id
}});
//Load the object and append "c_" to all keys in the key-value pairs and send data to AudienceManager.
adobe_dil.api.signals(my_object,"c_").submit();
And here is an example of the offline data upload
user1234 "age_range"="1","gender"="F","city"="LA","status"="active"
user5678 "age_range"="2","gender"="M","city"="CA","status"="inactive"
Another Idea, which I haven't done before and I don't really recommend, is to send all your CRM data as online transactions, by calling the online API directly from your back-end. It may cost you more though, given the number of activities you will make to AAM from the back-end.
References:
https://marketing.adobe.com/resources/help/en_US/aam/c_dil_send_page_objects.html
https://marketing.adobe.com/resources/help/en_US/aam/r_dil_create.html

Google+ userId into google analytics for attribution modeling

Due to the nature of my website, it is very complex to get a proper attribution model, cross device tracking is complex but necessary.
I would like to know if it is possible to obtain somehow a users google+ userId whenever he visits my site.
I know there is a feature called UserId where I need to generate my own ID and track it upon a customers visit, but due to the nature of my website, there is very little probability they will log in prior to converting (Fact which will make every cross device interaction useless).
You cannot use a Google ID as the User ID in Google Analytics. The User ID must be private and non PII, i.e. Google must have no way to determine who that ID belongs to. Obviously if it's a Google-based ID, they would be able to tell pretty easily.
The relevant bit from the TOS is paragraph 7 :
You will not (and will not allow any third party to) use the Service
to track, collect or upload any data that personally identifies an
individual (such as a name, email address or billing information), or
other data which can be reasonably linked to such information by
Google.

Possible to use ecommerce tracking to track multiple users for a single transaction?

We're creating a flow for boarding new customers and would like to use the enhanced ecommerce tracking of universal analytics to track the boarding steps.
A single applicant fills in a form supplying information about their business and delivery addresses and such. The problem is that after the application has been submitted, the applicants need to electronically sign an agreement. There can be multiple people signing, and the person signing therefor doesn't necessarily need to be the same person that filled in the application. Is it possible to track a flow where another user/session takes over and finalizes the application?
If all participants in the application process sign in with a token - same token for all - you can set it as userID and enable session stitching - you'll need special userID view (and update your privacy policy) which will only show visits for which the userID was set and will recognize users across multiple computers, devices etc.
However this will still give you aggregated data only, so if you want to track individual users in addition to the flow you have to set the userID as a custom dimension (talk to your lawyer first, even with an anonymous ID profile building might be a privacy issue). The userID must contain nothing that would allow anybody but your own company to identify a specific user or device (no e-mail-addresses, no MAC addresses etc). Then you can pull the individual data with the custom dimension as key and match it with your CRM data.
No guarantees, but that seems the closest you can get to your requirements using GA.

Adding Extra Validation To WordPress User Registration

I'm creating a members only Parent Directory for my son's high school International Baccalaureate website. This directory will contain contact information (names, street addresses, phone numbers, email addresses) of parents from each grade who have students currently enrolled in the IB program. I need to be able to authenticate a parents access to the directory against a valid student ID (which is a number).
I have a spreadsheet that contains the names of each student, their student ID, and their parent's names. There are some instances where a family has more than one student/student ID.
I'm trying to figure how I should be thinking about this, as a general approach. I have a few ideas but I need to distill them down to a more succinct inquiry.
One thought would be to bulk create wp subscriber accounts for all students. Their student IDs would somehow be appended to the user record. Parents would be directed to a login page, where they would login with the username of their child, password(which could be reset), and a fixed student id. If validation passes, they are redirected to the directory page.
Another thought would be to create user accounts on the fly that references a separate table which includes the student ID. So long as that unique student ID is part of the registration and it authenticates, anyone who has that number can register a profile.
In either scenario, once an account is created, the contact profile could either be pre-populated with the users info or updated at that time.
So my question is: Am I thinking about this in the right way? If so or if not, how can I better define this idea to get a more accurate scope? And then, ultimately, I need some direction on some possible options for getting it done in DIY way.
Sorry for the long word count. Your feedback is greatly appreciated. Below are some links that seem to be in the neighborhood of what I'm trying to do.
https://wordpress.stackexchange.com/questions/45900/adding-extra-authentication-field-in-login-page
Integrating wordpress authentication with an existing user database

Filtering Repeater items based on user status/role

I have a tricky requirement where I need to categorise documents attached to a product, available for download, based on the status of the user viewing the product. I.e. my site displays a list of products, clicking on one displays a product details page, and this page includes a list a documents related to the product, such as data sheets, user manuals, etc.
I have been asked to group documents into three classes of availability, v.i.z. those available freely to all users, including anonymous; those available to logged on users; and those available to anonymous users that provide contact information before downloading the document, presumably to boost sales leads.
The anonymous and logged on availabilities are quite easy, but the third seems a bit tricky to me. My first question is, is there a way I can filter documents for only logged on users without hooking into ItemDataBound or something, and my second question is, what is recommended for the case where a user must supply contact information to download a document?
In the second question, it has crossed my mind to actually register the user, but without them having to visit the new user registration page, and then I have role based filtering of documents. Currently the new user registration process automatically adds the Member role to all new users. Users I register 'quietly', just so they can download a document, wont be assigned the Member role, distinguishing them from normally logged on members. What other approaches could I take?
A lot of this implementation will depend on exactly what you want to accomplish and how you go about doing it.
For example, if I don't have access to the document, should I see the link?
If your implementation is that all users should be able to see it, but that the actual act of 'getting it' is dependent upon the individual role or membership, you could solve it fairly easy by implementing a "handler" to download the secured documents, that way you are not presenting a direct file link. That handler could then validate security, if they were not allowed, it could then take them to the login or register page as needed.
If the users don't see the documents until they meet the requirement, I would then filter BEFORE you bind to your repeater.

Resources