LinkedIn Outreach with TexAu for Companies/Groups/Events

One of our group members, Antonio from Italy, contacted for help on a use case he wanted to achieve with TexAu. He is doing HR recruitment for Apple Developers.

You can also connect with him on Linkedin here:
What he wanted to do:
- Find all developers from the Apple Academy and their students
- Scrape their profile data
- Connect with them
- Send them two messages to propose his service
- Withdraw all pending invitations
Initially, he tried this public recipe:


While the above recipe works, it wasn't the best way to address this use case.
The best way is to harness the full power of TexAu and build your own. Why? Because all use cases and needs are different. So are you, no?
Ready? Let's jump out Ninjas!
Here's what we will build in this tutorial:

STEP 1: Extract Linkedin Search Filters targeting Apple but only people related to the Apple Academy.
STEP 2: Extract all the profiles listed in this search. We will visit each profile page from LinkedIn search results. Your prospects will see you in their "who saw my profile" section on Linkedin.
STEP 3: Send to all these profiles a personalized connection request.
STEP 4: Add a 3-day delay before sending the 1st message and let the prospect connect with us.
STEP 5: Send 1st Linkedin message after connection.
STEP 6: Wait another five days to let the time for the prospect to read it
STEP 7: Send the 2nd and last message
STEP 8: Wait another five days waiting for a reply
STEP 9: End the flow by removing all the pending sent invites.
Now let's break every step and add the proper settings to build our recipe.
Load the "Recipe" tab from your TexAu dashboard and click the (+) icon "Create A New Recipe":

After building your recipe, rename it by the name of your convenience.
Then choose the first automation module you want to start the workflow.
Here, we will select the "Extract Profiles from Linkedin Search" module.


TexAu Workflow Builder dashboard
In TexAu, the automation modules you can pick from the right tab of the Recipe builder are the same ones available on the automation store Menu on the left in the dashboard.
The difference is that they are accessible from a different UI (see above for workflows and below for the module tab). The advantage of the workflow builder is how you can visually chain the automation.
Automation modules are the building blocks of your automation workflow, like Lego bricks.

TexAu Automation Store contains all the individual automation in the platform you can chain to build a workflow.
Once you added the first module, let's first input our connection cookie:

To do so in the TexAu Desktop app, go to your Linkedin account and click the TexAu Chrome extension that will give you your connection cookie value that we will then paste in the "Linkedin Session Cookie" field above:

In case you don't already have the extension, you can download it here:
Last, let's do a Linkedin search to filter the potential prospects we would like to connect with.
Antonio wanted people from the Apple Academy, whether teachers or students.
Now on your Linkedin search bar, type "apple developer academy" in quotation marks "".
Then click the "people" filter:


A list of all the potential profiles for this search will show.
Refine your filter by either adding Degree Connection, Location, Company or click All Filters to access more granular options like this:

That way, if we know our "persona" or "ideal customer profile" (ICP), we could imagine targeting specific roles or job titles, for instance.
Note about Linkedin new limits: Linkedin recently enforced new limits on 3rd-degree connections. Now you cannot send more than 100 connection requests per week. This limit doesn't apply to all accounts. It depends on many factors, such as your activity, your number of pending connections, and your content quality. Again, no one knows how the LinkedIn algorithm works here. Does that mean LinkedIn automation is dead? Surely not! It's all about the strategy and how you engage there. Last, Sales Navigator users have an edge by leveraging the "Open" profiles filter to bypass LinkedIn's new limits.
For Linkedin regular or premium users, the Linkedin search will display you a list of 100 pages maximum, each page showing ten profiles. So ten profiles per 100 pages = 1000 prospects maximum per search queries.

Once you are happy with the results, let's copy the search URL above and paste it back into TexAu module input settings:


That's it for step 1.
You can replace the search URL above with that one below for those of you who want to target specifically Linkedin event attendees. The process is the same.
Choose an upcoming event of your choice (won't work with ended events, only new ones).
For this, from the Linkedin homepage (feed), go to the search bar, type the topic you would like to find an event for and click "events".

Here's an example with the "startup" topic I would like to attend an event for:


Let's choose that one, for instance, then click on it:

Now click the blue button "attend event":

After being redirected to the event page, click on the number of attendees:

You will get redirected to that search page below. Now copy and paste that URL into our module instead of the previous company search URL. So it's the same automation as before but a different URL.

DONE!
Note that you can scrape a limit of 1000 attendees maximum. Again this is an imposed limit from Linkedin itself. TexAu can only scrape what is showing on the page source code.
Now TexAu has a dedicated automation module for extracting LinkedIn Event Attendees. This is precisely the same automation as "Extract from Search" but labeled that way for convenience. Both will work.
The only difference is that you can directly copy/paste the event URL instead of the attendees' profiles search URL (the step we did manually to retrieve attendees).

Here's how it works with the new "Extract Attendees From a Linkedin Event" module:

Same as before, enter your cookie, but now you can directly input the event URL below without going to the attendees' search list:


Done.
Alternatively, you can also create your event and apply the same process. Go to the homepage again in your Linkedin feed, click the (+) icon on the right, and repeat the same process after inviting attendees to your event. You can do so by sharing the link URL using an URL shortener like bit.ly or switchy.io to click track them with your UTM parameters or pixels.

NINJA!
Please note that you can only see LinkedIn event attendees IF you register for the event BEFORE it begins. Once done, you will be able to access this list after the event is over.
For those who want to target specific group members, you can replace the module above with that one: "Linkedin Group Members". The process is similar except for the name of the automation.


The only difference here is that instead of copying/pasting the Linkedin search URL, you will copy/paste the GROUP URL like this.
Go to your target group and copy this URL instead, then paste it to that module, EASY!

Another starting point is to use the "Extract any Company Employees on Linkedin" module instead.
It will extract these page results if you provide the Linkedin company URL:

It will scrape those profiles from the "people" tab above:

The rest is pretty similar to what we saw before, enter your cookie, the company URL, the number of pages you want (max 100), start page (from 1 to 10), employee role, number of profiles (max 1000 per searches):

Now let's chain another automation to our workflow.
Click on the blue (+) button below the first module:

Same as before, select Linkedin as the platform, then this time let's add the "Scrape a Linkedin Profile" module:


You can quickly search for any automation by typing the keyword containing the automation name you want to use for convenience. TexAu will dynamically display the automation names so you can find them quicker.
Why do we scrape profiles after scraping search results since we already have the name of the people?
Excellent question.
We do so because there is no better way to capture the most detailed information about a profile.
Scraping profile details is the most personalized data you can leverage compared to any other automation.
Using this precious data will allow us to personalize the copy of our messages even more later on.
Additionally, it will also create a visit from you on their profile that they will see in the "who saw my profile" section. So again, this creates awareness and grabs attention. But the real reason is the amount and data detail found on it.
Now, same as before, let's add our cookie to the input section of that module:

Now you will see below there is a field asking for "Profile URL".
This field will use the data we collected from the 1st step (search) to link the two modules.
Click on the little (+) icon in the right corner of that field and add the "url (ProfileURL)" variable in the Profile URL field:


What the f*$k is this variable widow? And what the hell is a variable, first???!!!
Well, this window displays the complete list of all the previous modules we used in the last steps, PLUS ALL THE VARIABLES IT SCRAPED on all the pages it visited before (search results, profiles, events, groups, etc...).
How can that be useful to us?
Variables are the glue that allows passing from one automation module to the next.
⚠️ THIS IS A FUNDAMENTAL CONCEPT TO UNDERSTAND IN TEXAU. ⚠️
Skip this and go back to Social Automation Kindergarten or Dux-Soup! 😄
So how does it work?
Let's look at this picture below for a moment:

What do the relay runners above have in common? The relay stick. They both participate in the same race for the same team (Team #Recipe).
The relay stick is the variable. The runners are the individual automation modules running for the same race (the workflow). The runner behind passes the variable to the runner ahead (next module).
So in TexAu: The previous modules contain Linkedin data (relay stick) that we will pass to the next module in the automation chain (the race).
In our tutorial, the "Scrape Linkedin Search Result" automation will pass the "ProfileUrl" variable (Url of the profile we scraped) to the next module: "Scrape a Linkedin Profile".
Both share this variable in common. This allows us to "glue" the modules together and make a tasty recipe.
But what is a variable in reality in Linkedin?
Let's study the first two modules we linked together:
First, one is scraping the search results:


The second will scrape each profile on the list opening each page link highlighted above. Those links as a whole are a dynamic variable. The profile "Url" in this case:



In the same way, you can use all the data scraped by TexAu as a variable too! And reuse it everywhere in your workflows as long as it is in common between 2 modules. That's how you link them together. Total creativity!
Last, these variables don't have to belong to the same platform too:
So, for example, you can link a company domain URL variable shared between 2 different pages.
That way, you could link two different modules like this:

Here, you can use the company domain found on Linkedin as the variable used in the second automation module because both data are of the same type (company website URL).
GOT IT NOW? NO? Feel depressed and lost, still?
Sleep a little, then come back in a few days.
I hope it will click in your head as it did in my mind one day 😛.
Now let's go back to our variable selection window.
Click the little dropdown arrow below to expand the variable list:


This list contains all the data fields we scraped in our previous module using Linkedin search results:
- url (Profile URL)
- pastJob (Past job)
- name (User name)
- firstName (First name)
- lastName (Last name)
- job (Current job)
- profilePicture (Profile picture)
- location (Location)
- query (Search query)
- category (Search result category)
- timestamp (Script execution timestamp)
Last but not least, it also contains all your local and global variables (more on this in another tutorial, it hurts the brain enough today lol Went there too, believe me)
You will notice the way we read it is always showing THE LAST PREVIOUSLY USED MODULE IN THE CHAIN ON TOP OF THE LIST.
It's precisely the opposite of how we read the flow builder, the first module in the flow at the top, the last one at the bottom.


Now let's end STEP 2.
Linkedin Premium and Sales Navigator users have an edge here. Their account benefits from a slightly higher limit. If you fit in this category, you can tick the appropriate box below too. In the same way, if you want to find B2B emails for each profile, you can also check this option (costs one email credit each).

Now let's move on to the 3rd STEP.
After searching for potential prospects and scraping their details, let's invite them to connect with us.
Same as before, click the blue (+) button and fire up a new automation module to chain it in our flow.
Select now "Send a Linkedin connection request" automation in the dropdown box below.
Same as before, let's also add our cookie:


Now in the profile URL field, let's do like before bypassing the "profileUrl" variable.
Where it becomes slightly different is that now we will use other variables from the previous modules too.
Namely:
- firstName (First Name of the profile)
- jobCompanyName1 (Current Company of the profile)
We will use the above in our connection message copy.


Finally, if you have a Linkedin premium, you can tick the corresponding box too.
Note: you can also verify if the request has been sent or not. "Why is that? I thought we were sending these messages already???" Because some profiles don't allow to connect directly (ex: out of network profiles), or some are private. So you can check that box too if you want (optional).

Now you may ask, but Arman, why all these variables??? Who cares after all when we probably only need three variables to personalize our messages anyway????
Very few tools allow a deep level of personalization.
If ABM (Account-Based Marketing) is your thing, you can use tools like Nexweave or Hyperise to personalize your Linkedin messages and emails.
Here you can use data like the prospect's profile image, leveraging more than 16 variables of personalization.
TexAu itself goes beyond that with data like last jobs, education, skills, up to +30 personalization variables you can use in your campaigns.
Almost limitless creative scenarios here 🤪.
Now our goal is to mimic real-life interaction. So here, we won't blast ten messages in one day to attract attention. You will attract an immediate ban instead if you do so.
So like in real life, we will let some time for our prospects to see our message and then reply to them if there is any interest.
Do to so, let's add another module:

Platform section

Input section
Here you can add any delay ranging from:
- Minutes
- Hours
- Days
Let's add a three days delay. DONE.
Now let's suppose our target profile accepted the connection request.
Let's send him the first follow-up message. Launch a new automation, this time using "Send a Linkedin message":

Same as before, enter your cookie, personalize your message copy with the past modules' variables:

Let's add the "profileUrl" variable from the previous module here again:

VERY IMPORTANT FEATURE: REPLY DETECTION ⚠️⚠️⚠️
Now for reply detection, no need to manually pick the "sentMessage" variable from the previous automation. Now, by clicking the newly and properly relabeled "REPLY DETECTION" checkbox, this variable will automatically be added from the last message automation (connection request or previous message - the most recent one in the recipe). Proper reply detection, is the easy way. NEAT.


TexAu will compare the new message you just sent as a follow-up with the previous message in the chat feed. (read again. Yes, it hurts).
Logically if the last message in the prospect chat box is the same as the previous message, that means they didn't reply. Simple as that.
If that's the case, your new message will go out.
If not (prospect has answered you), then no following message will go out.
So the setup below is the "reply detection" setting: if your prospect answers my last message, the automation will stop.

💡 For reply detection, always use the "sentMessage" variable from the PREVIOUS MESSAGE in the sequence.
Ex: Let's say your drip sequence contains four messages:
• To check reply detection for message #4, use "sentMessage" variable from message #3. • To check reply detection for message #3, use "sentMessage" variable from message #2. • To check reply detection for message #2, use "sentMessage" variable from message #1.
Do NOT • Check reply detection for message four use "sentMessage" variable from message 2 or 1
There are exceptions to this rule, but it will be that way 99% of the time. This is the default auto-suggested setting in TexAu. Check the box and call it a day.

Super Handy Tip: Did you know that you could rename all the modules of a workflow? Just click on the little pen on the module and label all the steps you want to remember better where you are in the flow. Handy!

Same thing as before. But now, instead of three days, let's add five days instead before sending a follow-up message again.

Exactly as we did on STEP 5, add a follow-up personalized message. Your turn!
Exactly like in STEPS 4 & 6, let's add another five days delay. Your turn.
Now we are reaching the end of our flow. You could add more follow-up messages and delays if you like.
Now it's time to remove all pending connection requests.
WHY?
Linkedin will jail your account if you don't remove these pending invites regularly.
The official limit is 3000 pending connection requests, and we will keep this number close to a minimum.
So to do so, let's add our final automation: "Auto Widthraw Linkedin Connection Request".
Here we will remove a small number of pending connections every day, like 20 profiles seven days after a profile enters the campaign.
Keep an eye on your pending invites on Linkedin and adjust the settings accordingly.


DOUBLE-CHECK, TRIPLE-CHECK ALL THE FLOW, AND SETTINGS, READY???
Before launching the automation, you can also check the box "Process only new results".
If you run this automation multiple times, using another prospect list or running schedule, TexAu will prevent any duplicate entries to receive twice the same message. Handy. This setting is meant to remove duplicate inputs, not duplicate outputs. This is a prevention mechanism to maintain unique interaction with each profile.
If you are using TexAu cloud:
NEVER, EVER EVER RUN IT WITHOUT PROXIES CLOSE TO YOUR LOCATION. Or End in Social Media Hell without any accounts left. Please be careful. Don't smoke. Use the Desktop app. Especially when you start.
For Desktop: ALL GOOD, NO PROXIES NEEDED.

Now, let's launch 🚀 our automation by clicking the play button:

After launching, the dashboard will darken and present you with this window. Click on "take me to results":

You will land on the results page showing the logs of your processing automation, unrolling live in real-time. Now click the green button "result":


The infamous logs. I will do another tutorial to show you how to read it.
You can check the data scraping in real-time from all the steps above. For example, here STEP 1 scraping Apple Academy related profiles from our starting search filter:

In this tab below are all the data collected from all the steps of your recipe flow:

Clicking on it will reveal all the modules that we have used so far. You can click any automation on this list to see the data.

Again, modules from the recipe are shown from first to last, from top to bottom in order.
Alternatively, you can download the CSV file to upload it to your CRM or a Google Sheet.
Now, let's go back to the beach and enjoy life because sending connection requests all day long on Linkedin sucks.

ENJOY LIFE! 🙌